//E001
//By JiangWei 演示orsci高精度计算模块中的部分功能。
//2019-02-21
//http://www.jiangw.cn
//http://www.orsci.cn
#include <iostream>
#include <string>
using namespace std;
#include "orsci.h"
using namespace orsci;
#define APPNAME "E001 - 高精度计算演示 http://www.orsci.cn"
int main()
{
cout << APPNAME << endl;
//演示:计算500的阶乘。测试大整数numb类型
{
cout << "Demo1:计算500的阶乘!" << endl;
numb x; //定义大整数
x = 1;
for (int k = 1; k < 500; k ++) //计算500的阶乘
{
x = x * k;
}
cout << x << endl;
cout << "有效数字长度:" << x.ofValidDigitalLen() << endl;
}
prec::resetMaxDecPrecision(500); //设定有效数字的位数,默认64。注:prec设置精度对所有prec定义的对象都有效,只需设置一次。
//演示:计算除法。Demo3:大浮点数prec乘法。
{
cout << "Demo2:计算1/7的除法,保留500位有效数字!" << endl;
prec y; //定义高精度浮点数
y = 1;
prec z = y / 7;
cout << z << endl;
cout << "Demo3:计算(1/7) * (1/7),保留500位有效数字!" << endl;
cout << z * z << endl;
}
//演示:大浮点数的部分函数演示
{
cout << "Demo4:计算ln(2),保留500位有效数字!" << endl;
prec y; //定义高精度浮点数
y = TMath::ln(2, 500); //求500位有效精度下,2的自然对数。
cout << y << endl;
cout << "Demo5:计算exp(ln(2)),保留500位有效数字!" << endl;
cout << TMath::exp(y, 500) << endl;
cout << "Demo6:计算sqrt(2),保留500位有效数字!" << endl;
cout << TMath::sqrt(2, 500) << endl;
}
//演示:计算pi的值
{
cout << "Demo7:计算pi,保留500位有效数字!" << endl;
cout << TMath::pi_Extract(500) << endl;
}
//演示:prec64,prec128类型,此外还有prec256,prec512,prec1024等类型,用法与此一致。
{
prec64 x;
prec128 y;
x = 1;
x = x / 7;
y = 1;
y = y / 7;
cout << "Demo8:prec64类型,1/7" << endl;
cout << x << endl;
cout << "Demo9:prec128类型,1/7" << endl;
cout << y << endl;
}
{ //结束程序。
cout << "Any key to stop...";
char pp; cin>>pp;
}
return 0;
}
|