00001
00012 #ifndef __BASIC_MATH_H__
00013 #define __BASIC_MATH_H__
00014
00015 #include "c_basic_math.h"
00016
00018
00038 void printBMStatus( const BM_STATUS bms, FILE* file=(FILE*)0 )
00039 {
00040 return printBM_STATUS( bms, file );
00041 };
00042
00044
00061 bool isValidValue( const double* value, BM_STATUS* bms=(BM_STATUS*)0 )
00062 {
00063 return ( isDouble( value, bms ) != 0 );
00064 };
00065
00067
00084 bool isValidValue( const __int64* value, BM_STATUS* bms=(BM_STATUS*)0 )
00085 {
00086 return ( isI64( value, bms ) != 0 );
00087 };
00088
00090
00099 double x_add_y(
00100 const double augend,
00101 const double addend,
00102 BM_STATUS* bms=NULL )
00103 {
00104 return doubleAddDouble( augend, addend, bms );
00105 };
00106
00108
00117 __int64 x_add_y(
00118 const __int64 augend,
00119 const __int64 addend,
00120 BM_STATUS* bms=NULL )
00121 {
00122 return i64AddI64( augend, addend, bms );
00123 };
00124
00126
00135 double x_sub_y(
00136 const double minuend,
00137 const double subtrahend,
00138 BM_STATUS* bms=NULL )
00139 {
00140 return doubleSubDouble( minuend, subtrahend, bms );
00141 };
00142
00144
00153 __int64 x_sub_y(
00154 const __int64 minuend,
00155 const __int64 subtrahend,
00156 BM_STATUS* bms=NULL )
00157 {
00158 return i64SubI64( minuend, subtrahend, bms );
00159 };
00160
00162
00171 double x_mul_y(
00172 const double multiplier,
00173 const double multiplicand,
00174 BM_STATUS* bms=NULL )
00175 {
00176 return doubleMulDouble( multiplier, multiplicand, bms );
00177 };
00178
00180
00189 __int64 x_mul_y(
00190 const __int64 multiplier,
00191 const __int64 multiplicand,
00192 BM_STATUS* bms=NULL )
00193 {
00194 return i64MulI64( multiplier, multiplicand, bms );
00195 };
00196
00198
00207 double x_div_y(
00208 const double numerator,
00209 const double denominator,
00210 BM_STATUS* bms=NULL )
00211 {
00212 return doubleDivDouble( numerator, denominator, bms );
00213 };
00214
00216
00225 __int64 x_div_y(
00226 const __int64 numerator,
00227 const __int64 denominator,
00228 BM_STATUS* bms=NULL )
00229 {
00230 return i64DivI64( numerator, denominator, bms );
00231 };
00232
00234
00243 double x_mod_y(
00244 const double numerator,
00245 const double denominator,
00246 BM_STATUS* bms=NULL )
00247 {
00248 return doubleModDouble( numerator, denominator, bms );
00249 };
00250
00252
00261 __int64 x_mod_y(
00262 const __int64 numerator,
00263 const __int64 denominator,
00264 BM_STATUS* bms=NULL )
00265 {
00266 return i64ModI64( numerator, denominator, bms );
00267 };
00268
00270
00278 double reciproc_x(
00279 const double value,
00280 BM_STATUS* bms=NULL )
00281 {
00282 return reciprocDouble( value, bms );
00283 };
00284
00286
00304 double Ceil( const double value, BM_STATUS* bms=(BM_STATUS*)0 )
00305 {
00306 return ceilDouble( value, bms );
00307 };
00308
00310
00328 double Floor( const double value, BM_STATUS* bms=(BM_STATUS*)0 )
00329 {
00330 return floorDouble( value, bms );
00331 };
00332
00334
00363 __int64 toInt64( const double value, double* intDbl=(double*)0, BM_STATUS* bms=(BM_STATUS*)0 )
00364 {
00365 return doubleToInt64( value, intDbl, bms );
00366 }
00367
00369
00376 double toDouble( const __int64 value )
00377 {
00378 return i64ToDouble( value );
00379 }
00380
00382
00408 double Round( const double value, const int decPlaces=0, BM_STATUS* bms=(BM_STATUS*)0 )
00409 {
00410 return roundDouble( value, decPlaces, bms );
00411 }
00412
00414
00427 int Compare( const double value1, const double value2, const double diff=NANO, BM_STATUS* bms=(BM_STATUS*)0 )
00428 {
00429 return doubleCompareDouble( value1, value2, diff, bms );
00430 }
00431
00433
00441 int Compare( const __int64 value1, const __int64 value2, const __int64 diff=0 )
00442 {
00443 return i64CompareI64( value1, value2, diff );
00444 }
00445
00447
00454 int isEven( const __int64 value )
00455 {
00456 return isEvenI64( value );
00457 }
00458
00460
00466 double Positive( const double value, BM_STATUS* bms=(BM_STATUS*)0 )
00467 {
00468 return positiveDouble( value, bms );
00469 }
00470
00472
00478 __int64 Positive( const __int64 value, BM_STATUS* bms=(BM_STATUS*)0 )
00479 {
00480 return positiveI64( value, bms );
00481 }
00482
00484
00490 double Negative( const double value, BM_STATUS* bms=(BM_STATUS*)0 )
00491 {
00492 return negativeDouble( value, bms );
00493 }
00494
00496
00502 __int64 Negative( const __int64 value, BM_STATUS* bms=(BM_STATUS*)0 )
00503 {
00504 return negativeI64( value );
00505 }
00506
00508
00515 double InvertSign( const double value, BM_STATUS* bms=(BM_STATUS*)0 )
00516 {
00517 return invertSignDouble( value, bms );
00518 }
00519
00521
00528 __int64 InvertSign( const __int64 value, BM_STATUS* bms=(BM_STATUS*)0 )
00529 {
00530 return invertSignI64( value, bms );
00531 }
00532
00534
00542 double x_pow_2( const double base, BM_STATUS* bms=NULL )
00543 {
00544 return doublePow_2( base, bms );
00545 };
00546
00548
00556 __int64 x_pow_2( const __int64 base, BM_STATUS* bms=NULL )
00557 {
00558 return i64Pow_2( base, bms );
00559 };
00560
00562
00570 double x_pow_3( const double base, BM_STATUS* bms=NULL )
00571 {
00572 return doublePow_3( base, bms );
00573 };
00574
00576
00584 __int64 x_pow_3( const __int64 base, BM_STATUS* bms=NULL )
00585 {
00586 return i64Pow_3( base, bms );
00587 };
00588
00590
00598 double x_pow_4( const double base, BM_STATUS* bms=NULL )
00599 {
00600 return doublePow_4( base, bms );
00601 };
00602
00604
00612 __int64 x_pow_4( const __int64 base, BM_STATUS* bms=NULL )
00613 {
00614 return i64Pow_4( base, bms );
00615 };
00616
00618
00630 double x_pow_y(
00631 const double base,
00632 const double exponent,
00633 BM_STATUS* bms=(BM_STATUS*)0 )
00634 {
00635 return doublePowDouble( base, exponent, bms );
00636 };
00637
00639
00651 __int64 x_pow_y(
00652 const __int64 base,
00653 const __int64 exponent,
00654 BM_STATUS* bms=(BM_STATUS*)0 )
00655 {
00656 return i64PowI64( base, exponent, bms );
00657 };
00658
00660
00669 double x_root_2(
00670 const double radicand,
00671 BM_STATUS* bms=(BM_STATUS*)0 )
00672 {
00673 return doubleRoot_2( radicand, bms );
00674 };
00675
00677
00689 __int64 x_root_2( const __int64 radicand, BM_STATUS* bms=(BM_STATUS*)0 )
00690 {
00691 return i64Root_2(radicand, bms);
00692 };
00693
00695
00703 double x_root_3(
00704 const double radicand,
00705 BM_STATUS* bms=(BM_STATUS*)0 )
00706 {
00707 return doubleRoot_3( radicand, bms );
00708 };
00709
00711
00719 double x_root_4(
00720 const double radicand,
00721 BM_STATUS* bms=(BM_STATUS*)0 )
00722 {
00723 return doubleRoot_4( radicand, bms );
00724 };
00725
00727
00736 double x_root_y(
00737 const double radicand,
00738 const double rootExponent,
00739 BM_STATUS* bms=(BM_STATUS*)0 )
00740 {
00741 return doubleRootDouble( radicand, rootExponent, bms );
00742 };
00743
00745
00754 __int64 x_root_y(
00755 const __int64 radicand,
00756 const __int64 rootExponent,
00757 BM_STATUS* bms=(BM_STATUS*)0 )
00758 {
00759 return i64RootI64( radicand, rootExponent, bms );
00760 };
00761
00763
00781 double log_b_x(
00782 const double base,
00783 const double value,
00784 BM_STATUS* bms=(BM_STATUS*)0 )
00785 {
00786 return doubleLogDouble( base, value, bms );
00787 }
00788
00790
00808 __int64 log_b_x(
00809 const __int64 base,
00810 const __int64 value,
00811 BM_STATUS* bms=(BM_STATUS*)0 )
00812 {
00813 return i64LogI64( base, value, bms );
00814 }
00815
00817
00829 void sortAscendant(
00830 double* values,
00831 const unsigned long count,
00832 BM_STATUS* bms=(BM_STATUS*)0 )
00833 {
00834 sortAscendantDouble( values, count, bms );
00835 };
00836
00838
00850 void sortAscendant(
00851 __int64* values,
00852 const unsigned long count,
00853 BM_STATUS* bms=(BM_STATUS*)0 )
00854 {
00855 sortAscendantI64( values, count );
00856 };
00857
00859
00864 long solveP1norm(
00865 double* xr,
00866 const double* pf )
00867 {
00868 return doubleSolveP1norm( xr, pf );
00869 };
00870
00872
00877 long solveP1(
00878 double* xr,
00879 const double* pf )
00880 {
00881 return doubleSolveP1( xr, pf );
00882 };
00883
00885
00891 long solveP2norm(
00892 double* xr,
00893 const double* pf )
00894 {
00895 return doubleSolveP2norm( xr, pf );
00896 };
00897
00899
00905 long solveP2(
00906 double* xr,
00907 const double* pf )
00908 {
00909 return doubleSolveP2( xr, pf );
00910 };
00911
00913
00919 long solveP3norm(
00920 double* xr,
00921 const double* pf )
00922 {
00923 return doubleSolveP3norm( xr, pf );
00924 };
00925
00927
00933 long solveP3(
00934 double* xr,
00935 const double* pf )
00936 {
00937 return doubleSolveP3( xr, pf );
00938 };
00939
00941
00947 long solveP4norm(
00948 double* xr,
00949 const double* pf )
00950 {
00951 return doubleSolveP4norm( xr, pf );
00952 };
00953
00955
00961 long solveP4(
00962 double* xr,
00963 const double* pf )
00964 {
00965 return doubleSolveP4( xr, pf );
00966 };
00967
00969
00975 long getPolyFactors1(
00976 double* pf,
00977 const double* xz)
00978 {
00979 return doubleGetPolyFactors1( pf, xz );
00980 }
00981
00983
00990 BM_STATUS getPolyFactors2(
00991 double* pf,
00992 const double* xz)
00993 {
00994 return doubleGetPolyFactors2( pf, xz );
00995 };
00996
00998
01006 BM_STATUS getPolyFactors3(
01007 double* pf,
01008 const double* xz)
01009 {
01010 return doubleGetPolyFactors3( pf, xz );
01011 };
01012
01014
01023 BM_STATUS getPolyFactors4(
01024 double* pf,
01025 const double* xz)
01026 {
01027 return doubleGetPolyFactors4( pf, xz );
01028 };
01029
01031
01042 double deg2Rad( const double degree, BM_STATUS* bms=(BM_STATUS*)0 )
01043 {
01044 return deg2RadDouble( degree, bms );
01045 };
01046
01048
01059 double rad2Deg( const double radian, BM_STATUS* bms=(BM_STATUS*)0 )
01060 {
01061 return rad2DegDouble( radian, bms );
01062 };
01063
01065
01080 double stringToDbl( const char* stringValue, BM_STATUS* bms=(BM_STATUS*)0 )
01081 {
01082 return stringToDouble( stringValue, bms );
01083 };
01084
01086
01108 __int64 stringToInt64( const char* stringValue, char** stopChar=(char**)0, BM_STATUS* bms=(BM_STATUS*)0 )
01109 {
01110 return stringToI64( stringValue, stopChar, bms );
01111 };
01112
01114
01133 double strToDbl(
01134 const char* str,
01135 BM_STATUS* bms=NULL)
01136 {
01137 return strToDouble( str, bms );
01138 };
01139
01141
01153 BM_STATUS solveL1(
01154 double* xr,
01155 const double* lf )
01156 {
01157 return doubleSolveL1( xr, lf );
01158 };
01159
01161
01176 BM_STATUS solveL2(
01177 double* xr,
01178 double* lf[2] )
01179 {
01180 return doubleSolveL2( xr, lf );
01181 };
01182
01184
01202 void printBitpattern( double value, FILE* file=(FILE*)0 )
01203 {
01204 return printDoubleBitpattern( value, file );
01205 };
01206
01208
01221 void printBitpatternFormatted( double value, FILE* file=(FILE*)0 )
01222 {
01223 return printDoubleBitpatternFormatted( value, file );
01224 };
01225
01227
01240 double sinus( const double rad, BM_STATUS* bms=(BM_STATUS*)0 )
01241 {
01242 return sinDouble( rad, bms );
01243 }
01244
01246
01260 double arcSin( const double value, BM_STATUS* bms=(BM_STATUS*)0 )
01261 {
01262 return asinDouble( value, bms );
01263 }
01264
01266
01279 double cosinus( const double rad, BM_STATUS* bms=(BM_STATUS*)0 )
01280 {
01281 return cosDouble( rad, bms );
01282 }
01283
01285
01299 double arcCos( const double value, BM_STATUS* bms=(BM_STATUS*)0 )
01300 {
01301 return acosDouble( value, bms );
01302 }
01303
01305
01323 double tangent( const double rad, BM_STATUS* bms=(BM_STATUS*)0 )
01324 {
01325 return tanDouble( rad, bms );
01326 }
01327
01329
01340 double arcTan( const double value, BM_STATUS* bms=(BM_STATUS*)0 )
01341 {
01342 return atanDouble( value, bms );
01343 }
01344
01346
01361 double cotangent( const double rad, BM_STATUS* bms=(BM_STATUS*)0 )
01362 {
01363 return cotDouble( rad, bms );
01364 }
01365
01367
01382 double arcCot( const double value, BM_STATUS* bms=(BM_STATUS*)0 )
01383 {
01384 return acotDouble( value, bms );
01385 }
01386
01388
01405 int Find( const double* element1, const unsigned int maxElements, const double elem )
01406 {
01407 return findDouble( element1, maxElements, elem );
01408 }
01409
01410
01412
01429 int Find( const __int64* element1, const unsigned int maxElements, const __int64 elem )
01430 {
01431 return findI64( element1, maxElements, elem );
01432 }
01433
01434 #endif //__BASIC_MATH_H__