libtommath大数库详解
数学软件Mathematica

Take[list,k]
前 k 个分量
Take[list,-k]
最后 k 个分量
Take[list,{i}]
{list[[i]]}
Take[list,{i,j}]
{list[[i]],list[[i+1]], ..., list[j]}
list[[i;;j]]
同上
Take[list,{i,j,h}]
Degree
角度到弧度的转换系数,Pi/180
E
自然对数的底,2.71828...
EulerGamma
Euler 常数:
GoldenRatio
黄金分割数:
I
虚部单位
Infinity
无穷大
Pi
圆周率
整数,有理数,实数(任意精度和机器精度),复数
*
基本运算符
基本运算:
+ - * /
加减乘除
{list[[i]],list[[i+h]], ... }
list[[i;;j;;h]]
同上
*
列表修改
Drop[list,{k}]
删除第 k 个分量
Drop[list,k]
删除前 k 个分量
Drop[list,-k]
In[2]:= g[x_,y_]:=2*x+y (* 函数 *)
In[3]:= f[2,3] (* 结果是什么? *)
*
字符串
字符串:用双引号括起来的字符序列
字符串相关函数
Characters[str]
转化为字符列表
StringJoin[s1,s2,...]
字符串合并
s1<>s2<>...
数学软件Mathematica简介

图形渲染
Mathematica可以生成高质量的图形和动画,用于工程 设计的可视化展示。这有助于工程师更好地理解设计原 理和性能特点,提高设计效率。
数据科学中的应用
数据挖掘
Mathematica提供了强大的数据分析和挖 掘工具,可以帮助数据科学家从大量数据中 提取有价值的信息。例如,聚类分析、关联 规则挖掘等。
提供交互式编程环境, 方便用户进行编程和调 试。
Mathematica的起源与发展
起源
Mathematica最初由美国数学家 Stephen Wolfram于1988年开发, 旨在提供一个强大的数学工具包,以 简化复杂的数学计算和可视化。
发展
经过多年的不断更新和完善, Mathematica已经成为一款功能强大 、易用性强的数学软件,广泛应用于 科研、教育、工程等领域。
支持多种类型的2D和3D图形,如散点图、 线图、曲面图、等高线图等。
数据可视化工具
提供丰富的数据可视化工具,如直方图、饼 图、热力图等。
可视化动画
可以创建动态的视觉效果和动画,以更好地 展示数据和过程。
可视化交互
用户可以通过交互式界面与图形进行交互, 以获取更多信息。
编程语言的高级特性
函数式编程
Mathematica采用函数式编程语言,支持高阶函数、匿名函数等特性。
数和微分方程求解方面更优秀。
与MATLAB的比较
MATLAB主要面向工程和科学计算,特别适合矩阵计算和数值分析。Mathematica在 符号计算、公式推导和数据可视化方面更胜一筹,而MATLAB在实时控制系统设计和信
号处理方面更具优势。
与其他编程语言的比较
要点一
与Python的比较
Python是一种通用的高级编程语言,广泛用于数据科学、 机器学习和Web开发等领域。Mathematica在数学计算和 符号推导方面更强大,而Python在灵活性和开放性方面更 优秀,两者在某些领域可以相互补充。
Mathematica应用简介

输出结果: {{-13,-20,0,17},{3,19,17,0}} 为方程组的基础解系, 所以,可写出通解:
X = k1 (13,20,0,17) T + k 2 (3,19,17,0) T
解方程组:
用LinearSolve命令求解 输入命令: A=. (清除先前A的值) A={{1/2,1/3,1},{1,5/3,3},{2,4/3,5}}; b={1,3,2};
3、由菜单输入:单击工具栏 Input→Create Table/Matrix/Palette项, 即可打开创建矩阵的对话框,输入行数、 列数,再单击OK,就立即在工作窗口得 到一个空白矩阵,填入数据即可。
矩阵基本运算及命令
命令格式 A+B,A-B 功能 矩阵A和B相加(减),但A与B 但 与 必须是行列数分别相同的同形矩 阵才能相加( 阵才能相加(减) 数K乘矩阵A
数学运算式和符号窗口
单击文件File菜单的子菜单Palettes中的 第4项Basic Input后,就会出现如图的数 学运算式和数学符号窗口。
二、Mathematica的输入与输 出显示
用户在工作窗口输入,按组合键Shift+Enter或 小键盘上的Enter键运行后,系统会自动进行处 理,并按每一次输入的顺序编号,在输入的内 容前自动添加输入提示符“In[编号]=:”; 在输出内容前自动添加输出提示符“Out[编 号]=” 如: In[6]=: 2^3-3^2 Out[6]= -1 表明第6次输入的是“2^3-3^2”,第6次输入 的运算结果是-1
求基础解系命令NullSpace[A]
求齐次线性方程组 3x1 + 4 x2 5 x3 + 7 x4 = 0 2 x 3x + 3x 2 x = 0 1 2 3 4 的基础解系 4 x1 + 11x 2 13x3 + 16 x 4 = 0 7 x1 2 x 2 + x3 + 3x 4 = 0 输入命令: A={{3,4,-5,7},{2,-3,3,-2},{4,11,13,16},{7,-2,1,3}}; NullSpace[A]
Math库实用汇总

Math库实用汇总在FP中,Math库为我们提供了丰富的数学函数。
以下介绍在OI中可能会用到的Math库中一些函数、过程。
使用方法:在程序头用Uses语句加载Math库例子:Program Ex_Math;Uses Math; Begin Writeln(hypot(3,4)); End.函数介绍:hypot 原型:function hypot(x:float;y:float):float功能:返回直角三角形中较长边的长度,也就是sqrt(sqr(x)+sqr(y))ceil 原型:function ceil(x:float):Integer 功能:返回比参数大的最小整数引发错误:在x超出Integer的范围时会引发溢出错误Floor 原型:function floor(x:float):Integer 功能:返回比参数小的最大整数引发错误:在x超出Integer的范围时会引发溢出错误power 原型:function power(base:float;exponent:float):float 功能:返回base的exponent次方引发错误:在base为负数且exponent为小数时Intpower 原型:function intpower(base:float;const exponent:Integer):float功能:返回base的exponent次方Ldexp 原型:function ldexp(x:float;const p:Integer):float 功能:返回2的p次方乘以xlog10 原型:function log10(x:float):float 功能:返回x的常用对数log2 原型:function log2(x:float):float 功能:返回x以2为底的对数logn 原型:function logn(n:float;x:float):float 功能:返回x以n为底的对数Max 原型:function Max(a:Integer;b:Integer):Integer function Max(a:Int64;b:Int64):Int64function Max(a:Extended;b:Extended):Extended 功能:返回a与b中较大的一个Min 原型:function Min(a:Integer;b:Integer):Integer function Min(a:Int64;b:Int64):Int64 function Min(a:Extended;b:Extended):Extended 功能:返回a与b中较小的一个arcsin 原型:function arcsin(x:float):float 功能:返回x的反正弦值,返回的是弧度指单位arccos 原型:function arccos(x:float):float 功能:返回x的反余弦值,返回的是弧度指单位tan 原型:function tan(x:float):float 功能:返回x的正切值,x以弧度为单位cotan 原型:function cotan(x:float):float 功能:返回x的余切值,x以弧度为单位arcsinh 原型:function arcsinh(x:float):float 功能:返回双曲线的反正弦arccosh 原型:function arccosh(x:float):float 功能:返回双曲线的反余弦arctanh 原型:function arctanh(x:float):float 功能:返回双曲线的反正切sinh 原型:function sinh(x:float):float 功能:返回双曲线的正弦cosh 原型:function sinh(x:float):float 功能:返回双曲线的正弦tanh 原型:function sinh(x:float):float 功能:返回双曲线的正切cycletorad 原型:function cycletorad(cycle:float):float 功能:返回圆的份数转换成弧度之后的值degtorad 原型:function degtorad(deg:float):float 功能:返回角度转换成弧度之后的值radtocycle 原型:function radtocycle(rad:float):float 功能:返回弧度转换成圆的份数之后的值radtodeg 原型:function radtodeg(rad:float):float 功能:返回弧度转换成角度之后的值MaxValue 原型:function maxvalue(const data:Array[] of float):floatfunction maxvalue(const data:Array[] of Integer):Integerfunction maxvalue(const data:PFloat;const N:Integer):floatfunction maxvalue(const data:PInteger;const N:Integer):Integer 功能:返回数组中的最大值MinValue 原型:function minvalue(const data:Array[] of float):floatfunction minvalue(const data:Array[] of Integer):Integerfunction minvalue(const data:PFloat;const N:Integer):floatfunction MinValue(const Data:PInteger;const N:Integer):Integer 功能:返回数组中的最小值sum 原型:function sum(const data:Array[] of float):float function sum(const data:PFloat;const N:LongInt):float 功能:求数组中所有数之和sumsandsquares 原型:procedure sumsandsquares(const data:Array[] of float;var sum:float;var sumofsquares:float)procedure sumsandsquares(const data:PFloat;const N:Integer;var sum:float;var sumofsquares:float)功能:将数组中的数求和放入num中,求平方和放入sumofsquares中** 原型:function operator **(float,float):float(bas:float;expo:float):floatfunction operator **(Int64,Int64):Int64(bas:Int64;expo:Int64):Int64功能:同等于Power,这是乘方的操作符例子:(注:以下全都在已经uses math的前提下进行的。
jmeter中 __math函数的用法

jmeter中 __math函数的用法一、概述JMeter是一款流行的性能测试工具,它提供了许多内置函数,方便测试人员快速进行性能测试和数据分析。
__math函数是JMeter中一个重要的内置函数,用于执行基本的数学运算。
本文将详细介绍__math函数的用法和注意事项。
二、__math函数参数说明__math函数接受两个参数,第一个参数为要进行数学运算的表达式,第二个参数为要参与运算的数据。
__math函数支持加法、减法、乘法、除法等基本数学运算。
三、__math函数示例以下是一些__math函数的示例,演示了如何使用__math函数进行各种数学运算。
1. 加法示例:假设我们要对两个数值进行加法运算,并将结果保存到变量中,可以使用以下代码:__math("$1 + 2$", result)执行结果为:32. 减法示例:假设我们要从某个数值中减去另一个数值,可以使用以下代码:__math("$3 - 1$", result)执行结果为:23. 乘法示例:假设我们要对两个数值进行乘法运算,可以使用以下代码:__math("$5 * 3$", result)执行结果为:154. 除法示例:假设我们要对一个数值除以另一个数值,并保留两位小数,可以使用以下代码:__math("$64.56 / 16$", result) // 保留两位小数执行结果为:4.0375四、注意事项1. JMeter中的__math函数仅支持基本数学运算,不支持复杂的数学表达式。
2. 在JMeter中使用__math函数时,需要确保参与运算的数据类型正确,否则可能会导致计算结果错误。
例如,整数与浮点数相除时,结果为浮点数;而整数相加或相减时,结果仍为整数。
3. JMeter中的变量名是区分大小写的,因此在使用__math函数时需要注意变量名的正确性。
python中math函数用法 排列组合

Python中的math模块提供了丰富的数学函数,其中包括排列组合的计算。
排列组合是组合数学中的重要概念,用于描述集合的各种组合方式。
在Python中,可以使用math模块中的相关函数来计算排列组合,从而简化数学计算的步骤,提高编程效率。
本文将介绍Python中math模块的基本用法,包括排列组合的概念、计算方法和实际应用。
通过本文的学习,读者将能够掌握Python中math模块的使用技巧,更好地应用于实际编程中。
一、排列组合的概念1.1 排列的概念排列是指从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列。
排列的计算公式为:A(n,m)=n!/(n-m)!其中,n!表示n的阶乘,即n!=n*(n-1)*(n-2)* (1)1.2 组合的概念组合是指从n个不同元素中取出m(m≤n)个元素,不考虑元素的顺序。
组合的计算公式为:C(n,m)=n!/m!(n-m)!二、Python中math模块的基本用法2.1 导入math模块在使用math模块中的函数之前,需要先导入math模块。
可以使用以下语句进行导入:```pythonimport math```2.2 计算排列使用math模块中的factorial函数来计算阶乘,结合排列的计算公式,可以计算排列的值。
计算5个元素中取3个元素的排列:```pythonn = 5m = 3result = math.factorial(n) / math.factorial(n - m)print("5个元素中取3个元素的排列数为:", result)```2.3 计算组合同样地,使用math模块中的factorial函数和组合的计算公式,可以计算组合的值。
计算5个元素中取3个元素的组合:```pythonn = 5m = 3result = math.factorial(n) / (math.factorial(m) * math.factorial(n - m))print("5个元素中取3个元素的组合数为:", result)```三、排列组合的实际应用排列组合在实际生活和工作中有着广泛的应用,例如概率统计、组合优化、密码学等领域。
Mathematical常用功能大全-精简版

Mathematica for Windows 常用用法一、Mathematica 的主要功能Mathematica 是美国Wolfram 公司开发的一个功能强大的计算机数学系统,提供了范围广泛的数学计算功能,主要包括三个方面:符号演算、数值计算、图形。
例如:多项式的四则运算、展开、因式分解,有理式的各种计算,有理方程、超越方程的解,向量和矩阵的各种计算,求极限、导数、极值、不定积分、定积分、幂级数展开式,求解微分方程,作一元、二元函数的图形等等。
二、Mathematica 的基本知识 1.输入表达式:直接输入一个表达式(包括算式和命令,长表达式用“Enter ”换行)后,按“Shift+Enter ”执行,执行后以“Out[命令序号]= ……”形式输出执行结果,输出的结果可在后续的表达式中使用。
若命令后有分号,则不输出执行结果(图形输出与Print 命令除外)。
“%”表示上一个输出,“%%”表示倒数第2个输出,“%i”表示第i个命令的输出。
2.运算符:+、-、*、/、^ ,“*”可用空格代替,“^”表示乘方。
如:In[1]:=2^10,输出为“Out[1]= 1024”,其中“In[1]:=”不需要输入。
In[2]:=3+5,Out[2]= 8;In[3]:=%-2,Out[3]= 6;In[4]:=%2+4,Out[4]= 12;In[5]:=1/3-1/4,Out[5]=121;In[6]:=N[%],Out[6]= 0.0833333; In[7]:=N[%5+12,10],Out[7]= 12.08333333(注意字母的大小写) 3.变量赋值:变量=表达式,“x=.”或Clear[x] 表示清除对x 的赋值。
表达式/.t ->c ,将表达式中的t 全替换成c 。
?x ,查x 信息。
4.常用的数学常数:Pi (π)、E(e)、Infinity (∞)、I (1-)5.常用的数学函数:Abs, Sin, Cos, Tan, Cot, ArcSin, Log (自然对数), Sqrt, Exp 如:In[1]:=Sqrt[2]+1;In[2]:=Sin[2]+ArcSin[1];In[3]:=Exp[2]+% (自变量用[ ]括,区分大小写,首字母大写) 三、常用运算 1.多项式运算:In[1]:= (2+4*x^2)*(1-x)^3 或 In[1]:= t = (2+4*x^2)*(1-x)^3 (将右端表达式赋值给t ); In[2]:=a=t/.x->4 (计算表达式t 当x=4时的值,并赋值给变量a ) In[3]:=a=. (清除变量a ) In[3]:=Expand[t](展开);In[4]:=Factor[%](把上一个结果因式分解) 2.解方程:In[1]:=Solve[x^2+3*x = = 2];In[2]:=N[%]; In[3]:=Solve[a*x-b= = 0, x]; In[4]:=NSolve[{x-2*y= =0,x^2-y= =1},{x,y}](解方程组并得到数值解) 3.自定义函数:In[1]:= f [x_ ]:=x^2+2*x ; In[2]:=f[5]+7; In[3]:=f[a+b] 4.求极限:In[1]:=Limit[Sin[x]/x, x ->0]; In[2]:=Limit[(1+1/n)^n, n->Infinity],Out[2]=E 5.求(偏)导数:In[1]:=D[a*x^2+3, x];In[2]:=D[x^2+y^3-Sin[2*y], y](对y 的偏导数); In[3]:=D[Log[x], {x,2}] (求对x 的二阶导数); In[4]:=D[Sin[x+y]*Exp[z*y^2],x,y] (求对x 、y 的二阶混合偏导数); In[5]:=Simplify[%] (对前一结果化简); In[6]:=D[Sin[x+y]*Exp[z*y^2],{x,2},{y,3}] 6.求不定积分:In[1]:=Integrate[x^2,x];In[2]:=Integrate[1/(x^2+a^2),x] 7.定积分:In[1]:=Integrate[x^2, {x,0,1}];In[2]:=Integrate[x^2,{x,a,b}]; In[3]:=Integrate[x^2+y^2, {x,0,a},{y,0,b}];(求矩形域上的二重积分) In[4]:=Integrate[1, {x,-1,1},{y,-Sqrt[1-x^2],Sqrt[1-x^2]}];Out[4]=Pi (圆面积) 8.幂级数展开:In[1]:=Series[Exp[x],{x,0,4}](在x=0处展开到x 的四次幂) 9.矩阵的输入和输出:In[1]:= a ={{1,2},{3,4}}(定义一个2x2的矩阵a ,按行写);In[2]:=MatrixForm[a](输出为矩阵形式);In[3]:=Transpose[a](a 的转置); In[4]:=a[[2]](a 的第2行);In[5]:=Tanspose[a][[2]](a 的第2列); In[6]:=Inverse[a](求a 的逆矩阵);In[7]:=Det[a](矩阵的行列式); In[8]:=Eigenvalues[a](求特征值);In[9]:=Eigenvectors[a](求特征向量); In[10]:=RowReduce[a](把a 化为阶梯形,可用于求矩阵的秩、判断线性相关性); In[11]:= b ={{5,6,7},{8,9,10}};In[12]:= a .b (矩阵a 与b 的乘积) 10.解线性方程组:In[1]:= a ={{3,4,5,6},{6,8,10,12},{4,5,6,7},{5,6,7,8}};(a 的秩为2) In[2]:= b ={1,2,3,5}(列向量);(增广矩阵的秩也为2) In[3]:=LinearSolve[a,b](求线性方程组ax=b 的一个特解); In[4]:=NullSpace[a](求线性方程组ax=0的一个基础解系);In[5]:= x =k1%4[[1]]+k2%4[[2]]+%3(ax=b 的全部解,k1、k2为任意常数)11.求和:In[1]:=NSum[Sin[n]/n^3,{n,1,Infinity}](求级数∑∞=13sin n nn 的和)12.求极小值:In[1]:=FindMinimum[Sin[x]*Cos[x],{x,0.5}](求函数在0.5附近的极小值);In[2]:=FindMinimum[Sin[x*y]*Exp[x^2],{x,0.2}, {y,0.3}](求多元函数极小值) 13.求解线性规划问题:Min cx ,mx ≥b ,x ≥0,求向量x 。
第零讲 Mathematica软件使用简介

第零讲Mathematica软件使用简介一、系统概述Mathematica是美国Wolfram研究公司开发的一个功能强大的计算机数学软件系统,也称为符号计算系统。
Mathematica提供了范围广泛的数学计算功能,支持在各个领域的人们所需要的各种计算。
它是从事各种理论工作(数学、物理、……)的科学工作者、从事实际工作的工程技术人员、以及学校教师和学生的首选计算平台。
Mathematica的主要功能包括三个方面:符号演算、数值计算和图形技术。
例如,它可以做多项式的各种计算(四则计算、展开、因式分解等);求整式方程、有理式方程和的等的精确解和近似解;数值的或一般表达式的向量和矩阵的各种计算;求一般函数表达式的极限、导函数、积分、幂级数展开、求解某些微分方程等;任意位的整数的精确计算、分子分母为任意非零整数的有理数的精确计算(四则计算、乘方等)以及任意位精确度的数值(实数值或复数值)计算。
使用Mathematica还可以非常方便地作出以各种方式表示的一元和二元函数的图形,可以根据需要自由选择画图的范围和精确度。
因此,Mathematica的出现所带来的思维和解题工具的革新必将对各种需要数学计算和绘制函数图形的工作领域产生深远的影响。
Wolfram研究公司自从1988年推出Mathematica系统的1.0 DOS版本以来,历经多次升级和改版,目前已发出For Windows的 5.0版本。
本精品课程主要以Mathematica4.2 for Microsoft Windows版本为例简要介绍该系统的功能及其应用。
1.Mathematica的工作环境Mathematica的运行环境要成功安装并稳定地运行Mathematica for Windows4.2,用户的计算机必须满足以下基本配置条件:·P3或更高型号处理器的个人或多媒体计算机;·Microsoft Windows98、Windows2000、Windows XP或以上版本;·硬盘空间至少200MB,建议1GB以上Mathematica的工作窗口及使用运行Mathematica系统后,将出现下图所示的主窗口:Mathematica4.2的工作窗口有两种类型:笔记本(Notebook)工作窗口和基于文本(Text Based)的工作窗口,这两个工作窗口分别由Mathematica提供的两个基本组成系统――输入输出控制系统(Front End系统)和内核系统(Kernel系统)所包含的交互接口来实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.5 Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5.1 Single Initialization . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4 Function Organization . . . . . . . . . . . . . . . . . . . . . . . . 10
7.5 Next Prime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
7.6 Random Primes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
1.4 Build Configuration . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4.1 Build Depends . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.2 Build Tweaks . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.3 Logical Operations . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3.1 Multiplication by two . . . . . . . . . . . . . . . . . . . . 26
3.3.2 Polynomial Basis Operations . . . . . . . . . . . . . . . . 28
7.6.1 Extended Generation . . . . . . . . . . . . . . . . . . . . . 47
8 Input and Output
49
8.1 ASCII Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.2 Modular Exponentiation . . . . . . . . . . . . . . . . . . . . . . . 43
6.3 Root Finding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2 Barrett Reduction . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.3 Montgomery Reduction . . . . . . . . . . . . . . . . . . . . . . . 37
5.4 Restricted Dimminished Radix . . . . . . . . . . . . . . . . . . . 40
3.2.1 Unsigned comparison . . . . . . . . . . . . . . . . . . . . . 23
3.2.2 Signed comparison . . . . . . . . . . . . . . . . . . . . . . 24
3.2.3 Single Digit . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.6 Maintenance Functions . . . . . . . . . . . . . . . . . . . . . . . . 15
2.6.1 Reducing Memory Usage . . . . . . . . . . . . . . . . . . 15
2.6.2 Adding additional digits . . . . . . . . . . . . . . . . . . . 16
4 Multiplication and Squaring
31
4.1 Multiplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2 Squaring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
9
2.1 Building Programs . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Return Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2 License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Building LibTomMath . . . . . . . . . . . . . . . . . . . . . . . . 2
2.5.2 Single Free . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5.3 Multiple Initializations . . . . . . . . . . . . . . . . . . . . 12
2.5.4 Other Initializers . . . . . . . . . . . . . . . . . . . . . . . 13
3.5.1 Negation . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.5.2 Absolute . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.6 Integer Division and Remainder . . . . . . . . . . . . . . . . . . . 30
1.4.3 Build Trims . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5 Purpose of LibTomMath . . . . . . . . . . . . . . . . . . . . . . . 5
2 Getting Started with LibTomMath
iii
3 Basic Operations
19
3.1 Small Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.1 Single Digit . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.5 Unrestricted Dimminshed Radix . . . . . . . . . . . . . . . . . . 41
6 Exponentiation
43
6.1 Single Digit Exponentiation . . . . . . . . . . . . . . . . . . . . . 43
1.3.1 Static Libraries . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3.2 Shared Libraries . . . . . . . . . . . . . . . . . . . . . . . 2
1.3.3 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
7 Prime Numbers
45
7.1 Trial Division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
7.2 Fermat Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.1.2 Long Constants . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1.3 Initialize and Setting Constants . . . . . . . . . . . . . . . 21
3.2 Comparisons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Open Source. Open Academia. Open Minds. Tom St Denis,
Ontario, Canada
Contents
1 Introduction
1
1.1 What is LibTomMath? . . . . . . . . . . . . . . . . . . . . . . . . 1
4.3 Tuning Polynomial Basis Routines . . . . . . . . . . ction