Интересно, существует ли прямой способ импортировать содержимое файла CSV в массив записей, во многом так, как R ' Может кто-нибудь придумать способ временно обойти эту ошибку и вычислить ^ b (обе с плавающей запятой) без питания ...
В настоящее время мне приходится работать в среде, где глючит оператор питания. Может кто-нибудь придумать способ временно обойти эту ошибку и вычислить ^ b (с плавающей запятой) без степенной функции или оператора?
, если у вас есть sqrt ():
double sqr( double x ) { return x * x; }
// meaning of 'precision': the returned answer should be base^x, where
// x is in [power-precision/2,power+precision/2]
double mypow( double base, double power, double precision )
{
if ( power < 0 ) return 1 / mypow( base, -power, precision );
if ( power >= 10 ) return sqr( mypow( base, power/2, precision/2 ) );
if ( power >= 1 ) return base * mypow( base, power-1, precision );
if ( precision >= 1 ) return sqrt( base );
return sqrt( mypow( base, power*2, precision*2 ) );
}
double mypow( double base, double power ) { return mypow( base, power, .000001 ); }
тестовый код:
void main()
{
cout.precision( 12 );
cout << mypow( 2.7, 1.23456 ) << endl;
cout << pow ( 2.7, 1.23456 ) << endl;
cout << mypow( 1.001, 1000.7 ) << endl;
cout << pow ( 1.001, 1000.7 ) << endl;
cout << mypow( .3, -10.7 ) << endl;
cout << pow ( .3, -10.7 ) << endl;
cout << mypow( 100000, .00001 ) << endl;
cout << pow ( 100000, .00001 ) << endl;
cout << mypow( 100000, .0000001 ) << endl;
cout << pow ( 100000, .0000001 ) << endl;
}
выводит:
3.40835049344
3.40835206431
2.71882549461
2.71882549383
393371.348073
393371.212573
1.00011529225
1.00011513588
1.00000548981
1.00000115129
Вы можете использовать идентификатор a b = e ( b log a ) , тогда все вычисления относятся к одной и той же базе e = 2.71828 ...
Теперь вам нужно реализовать f (x) = ln (x) и g (х) = е ^ х. Самый быстрый метод с низкой точностью - использовать таблицы поиска для f (x) и g (x). Может быть, этого достаточно для ваших целей. Если нет, вы можете использовать разложения в ряд Тейлора , чтобы выразить ln (x) и e ^ x в терминах умножения и сложения.