每隔一段时间,我想做算术与大整数大小超过可适应MATLAB的标准数据类型。因为我没有符号工具箱,简单的解决方案是用MATLAB写出来。我在这些工具完全是用MATLAB编写的,所以不需要编译的代码。算术与新品简单工具。=新品(17)^ 17 = 82724026188633676417717 + ^ 17岁= 39786732894291535047752038041559739510060813980024082300128677315737220661057371007315566038577459460472295375967652912115530975094458230159748945767638080502959227566911971103003303064782118652210655457390045806990391903935723345217011098898558323414160560058788484994314232438919361648480915796003405953154858547321336465170635561696613297503569949729314也有一些不错的附加元件,例如一个工具来计算准确的二项式系数对大参数,或者大的阶乘,与数千位二进制数转换成十进制(新品)形式。例如,现有nchoosek函数在matlab会心烦意乱甚至相当小的二项式系数。nchoosek(100年,50)警告:结果可能不准确。系数大于1.000000 e + 15,只有准确的15位数。> In nchoosek at 66ans = 1.0089e+29However, nchoosek has no such issues on vpi numbers.nchoosek(vpi(100),50)ans =100891344545564193334812497256Similarly, the computation of factorial(171) will cause an overflow. While I'll admit that there are many good ways to avoid this problem, the factvpi function has no problems at all.factorial(171)ans = Inffactorial(vpi(171))ans =1241018070217667823424840524103103992616605577501693185388951803611996075221691752992751978120487585576464959501670387052809889858690710767331242032218484364310473577889968548278290754541561964852153468318044293239598173696899657235903947616152278558180061176365108428800000000000000000000000000000000000000000There are now GCD and LCM tools, both of which can accept more than two input arguments.lcm(vpi(123452356),12344332,65364467)ans =3557547184310976844988I've also put in some tools that can test for primality. For example, the Mersenne prime:p = vpi(2)^127 - 1ans =170141183460469231731687303715884105727isprime(p)ans = 1Factoring of vpi numbers is now implemented.factor(vpi('1234567890123456789'))ans = 3 3 101 3541 3607 3803 27961Vectors or arrays of vpi numbers work very nicely now.A = vpi(eye(3))*3 + 1A = 4 1 1 1 4 1 1 1 4A^17ans = 5642305908354 5642176768191 5642176768191 5642176768191 5642305908354 5642176768191 5642176768191 5642176768191 5642305908354Dozens of other tools are also included. I've even included a tool just for fun that will convert a number into a readable text version of it as a large integer.vpi2english(vpi('12000000110022987'))ans =twelve quadrillion, one hundred ten million, twenty two thousand, nine hundred eighty sevenFor those Project Euler solvers around, vpi makes many of the problems easy to solve.Addenda - Ben Petschel has graciously given me code for unique and sortrows operations on vpi arrays. Many thanks to Ben!
议员工具箱定义一个新类,议员类,拥有高精度数量。许多常见数值函数重载这个类,因此工作不需要修改源代码。看看@mp目录在MATLAB下目录议员支持函数的列表。万博1manbetx如果函数不是专门写给议员的对象,它仍然可能工作如果函数仅依赖于函数在@mp目录中。预编译和安装在内部的功能从TMW eig等不会处理议员对象,除非专门写从@mp目录使用重载函数。一个简单的脚本,mp_makeall。米看当前的变量,并将所有双打议员对象。议员工具箱只实现基地10数量,和舍入模式是固定GMP_RNDN(除非你改变它在所有的私人/ * /。c文件和重新编译)。重载函数和,最小值和最大值仅为1或2维议员工作对象。议员可以生成随机数使用rand()如果兰德至少1的输入参数是一个国会议员对象。然而,种子给gmp_randseed_ui只是范围在0
halfprecision转换的输入参数/半精度浮点位模式对应于IEEE 754 r。位模式存储在一个uint16类变量。请注意,halfprecision *不是*一个类。也就是说,你不能做任何的算术与半精密二进制模式。halfprecision仅仅是一个函数,将IEEE 754 r一半精密位模式从其他数字MATLAB /变量,和对一些执行各种测试模式(isinf isnan, eps等)。半精密位模式如下:1位符号位5位指数,偏见15 10位尾数,隐藏的领先,规范化1.0特殊浮点二进制模式识别和支持:所有指数位零:——如果所有尾数位是0,然后数量是零(可能签署),否则,数量是一个规范化的位模式(主要存在)所有指数位设置为1:——如果所有尾数位是0,那么号码是+∞或无穷-否则,号码是南(不是一个数字)这个浮点格式的更多细节可以在这里找到:万博1manbetxhttp://en.wikipedia.org/wiki/Half_precision建筑:halfprecision要求一个墨西哥人的例程(仅一次)。这个过程通常是自身建设第一次调用这个函数只要你有halfprecision的文件。m和halfprecision。c在MATLAB路径相同的目录中。如果您需要手动建立墨西哥人功能,在halfprecision看到文档。墨西哥人的例程说明建设。C = halfprecision语法B = halfprecision (A) (B类名或函数)L = halfprecision(指令)halfprecision (B, disp)描述=一个MATLAB数值数组,char数组,数组或逻辑。B =变量转化为半精度浮点位模式。位模式将作为uint16返回类变量。只是显示的值位模式解释为如果它是一个16位无符号整数。看到halfprecision值,使用“disp”选项,它将二进制模式转换成一个类,然后将它们显示。C =半精度浮点位模式转化为类s B必须uint16或int16类变量。 classname = char string naming the desired class (e.g., 'single', 'int32', etc.) function = char string giving one of the following functions: 'isinf' = returns a logical variable, true where B is inf 'isnan' = returns a logical variable, true where B is nan 'isnormal' = returns a logical variable, true where B is normalized 'isdenormal' = returns a logical variable, true where B is denormalized 'eps' = returns eps of the half precision values directive = char string giving one of the following directives: 'openmp' = returns a logical variable, true when compiled with OpenMP 'realmax' = returns max half precision value 'realmin' = returns min half precision normalized value 'realmindenormal' = returns min half precision denormalized value 'version' = returns a string with compilation memory model 'disp' = The floating point bit values are simply displayed. Examples >> a = [-inf -1e30 -1.2 NaN 1.2 1e30 inf] a = 1.0e+030 * -Inf -1.0000 -0.0000 NaN 0.0000 1.0000 Inf >> b = halfprecision(a) b = 64512 64512 48333 65024 15565 31744 31744 >> halfprecision(b,'disp') -Inf -Inf -1.2002 NaN 1.2002 Inf Inf >> halfprecision(b,'double') ans = -Inf -Inf -1.2002 NaN 1.2002 Inf Inf >> 2^(-24) ans = 5.9605e-008 >> halfprecision(ans) ans = 1 >> halfprecision(ans,'disp') 5.9605e-008 >> 2^(-25) ans = 2.9802e-008 >> halfprecision(ans) ans = 1 >> halfprecision(ans,'disp') 5.9605e-008 >> 2^(-26) ans = 1.4901e-008 >> halfprecision(ans) ans = 0 >> halfprecision(ans,'disp') 0 Note that the special cases of -Inf, +Inf, and NaN are handled correctly. Also, note that the -1e30 and 1e30 values overflow the half precision format and are converted into half precision -Inf and +Inf values, and stay that way when they are converted back into doubles. Caveat: I have only tested this code on a PC, which is Little Endian. I put in code to handle Big Endian machines, but I do not have a way to test it, so I can't say for sure that it will work properly. Let me know if you have problems.
这个MATLAB的m文件扩展内置dec2bin()和bin2dec()函数功能。当你输入一个浮点数为25.757你期望得到correspoing二进制数,反之亦然。随时改正。但提到我在需要的地方(笑)。
XSum——和错误compensationThe精度浮点数的总和是有限的截断误差。例如总和([1 e16天1,1 e16天])回复0,而不是1和误差总和(RANDN (N, 1)大约是每股收益* (N / 10)。卡亨,Knuth,德克,Ogita和臀部(和其他人)派生的一些方法来减少舍入误差的影响,以最快的速度实现这里C-Mex: XSum (RANDN (N, 1),“Knuth”)的所有15位数。Y = XSum (X N方法)输入:X:数组任何规模的两倍。护士:维操作。方法:弦:“双”、“长”、“卡亨”,‘Knuth’,‘KnuthLong’,‘Knuth2’。输出:Y:双数组,相当于总和,但根据该方法补偿误差。双精度的高精度的结果是圆形的。方法:(速度和准确度比较总和)-双:单线程实现Matlab的总和。至少在Matlab 2008 a - 2009 b多线程求和的结果可以从调用调用略有不同。等效精度。 1.1 to 2 times slower than SUM.- Long: Accumulated in a 80 bit long double, if the compiler support this (e.g. LCC v3.8). 3.5 more valid digits, 2 times slower.- Kahan: The local error is subtracted from the next element. 1 to 3 more valid digits, 2 to 9 times slower.- Knuth: As if the sum is accumulated in a 128 bit float: about 15 more valid digits. 1.4 to 4 times slower. This is suitable for the most real world problems.- Knuth2: 30 more valid digits as if it is accumulated in a 196 bit float. 2 to 8 times slower.- KnuthLong: As Knuth, but using long doubles to get about 21 more valid digits, if supported by the compiler. 2.5 times slower.COMPILATION: mex -O XSum.cTested: Matlab 6.5, 7.7, 7.8, WinXP, BCC5.5, LCC2.4/3.8, Open Watcom 1.8, MSVC++ 2008TestXSum checks the validity, speed and accuracy after compiling (see screen shot).Pre-compiled MEX files:http://www.n-simon.de/mexReferences:Ogita武和齐格弗里德m .臀部和胫骨'ichi Oishi:“准确的金额和数量积应用”参见:INTLAB, s m .臀部:http://www.ti3.tu-harburg.de/rump/intlab
[S、E、F] = IEEE754 (X)返回符号位,指数,和IEEE 754浮点值X的尾数,表示为二进制数字字符串的长度是1,11日分别和52。X =(确切的算术和十进制记数法)(1)^ * (1 + F / (2 ^ 52)) * 2 ^ (e - 1023),除了特殊值0,正无穷,NaN,规范化的数字(0和最小正浮点数之间)。
Fr_bin2dec的函数。米将积极的双星系统分数转换为十进制分数。Fr_dec2bin的函数。米将积极的十进制分数转换为二进制分数。MATLAB本身bin2dec。m和dec2bin。米,但似乎没有标准的MATLAB函数当分数。例如,如果我们希望迅速获得十进制数的二进制分数:0.000101,或说,0.010101111,或说,11010.1011001等。(它们是:0.078125、0.341796875和26.6953125职责)。这两个双功能开发主要以获得立竿见影的效果而在学校学习算术编码(熵)。(现在,我增加了更多更好地解释该项目其他观众的评论。)这两个函数的结果是有限的精度由于num2str中使用的“精度”功能。米除了浮点限制和舍入误差。这些功能已经被设置为16 num2str.m的使用精度。积累的错误由于这些限制可以看到当两个函数连续成对测试。这两个文件有许多“使用Egs”这将使读者更容易应用这些功能和测试他们有更多关键/独特的情况下自己的——包括可能在某些情况下可能会中断的代码呢? Pl do forward me any new case that breaks the code beyond the aforesaid limitations.
N维积,以防有人需要它。我添加了数字和符号的例子。
DISPN (X, N)显示矩阵X N位精度的。参见DISP (X),它显示在当前屏幕矩阵X的格式。
这个函数显示的IEEE双精度表示在MATLAB的两倍。如果使用符号数学工具箱,它也可以显示为代表的确切数字,IEEE浮点数(这可能不是一模一样的输入;文章在看到1996年秋季克里夫的角落//www.tianjin-qmedu.com/content/dam/mathworks/mathworks-dot-com/company/newsletters/news_notes/pdf/Fall96Cleve.pdf)
% % % *转换颜色名称*或*十六进制颜色代码* * rgb * *三联体*。% % * rgb * *三联体*是三元素的行向量元素指定%的强度红、绿、蓝的颜色。强度%在区间[0,1];例如,[0.4 0.6 0.7]。% % * *十六进制颜色代码是一个特征向量或一个字符串标量%始于一个散列符号(#)后面跟着三个或六个十六进制数字,%的范围可以从0 f值是不区分大小写的。因此,颜色代码% # FF8800 ', ' # FF8800 ', ' # F80”,“# F80”是等价的。% % %语法% | | % % | rgb =颜色(名字)| % % | rgb颜色(十六进制)= | | % % % % |描述颜色显示颜色选择器。% % | rgb颜色=(名字)|颜色名称转换为一个rgb值。% % | rgb =颜色(十六进制)|转换十六进制颜色代码到一个rgb值。% % % % % %示例图(颜色,颜色(“鬼”));% fplot (@ (x) sin (x),颜色,颜色(“皇家”)、“线宽”,7);%持有(上);% fplot(0,“颜色”,颜色(“火”)、“线宽”,3,“线型”,“-”);%持有(“关闭”);%轴(“关闭”); % title('Sin(x)', 'Color', color('golden'), 'FontSize', 20);%%% References% % %% Author% yasin.zamani@utah.edu%
轮从左边到N位数组,把左边的元素更多的数字(“马克斯(abs (x(:))))作为参考。因此,它不同于ROUNDN (mappinf工具箱),因为后者以点为reference.roundd (0.012345, 3) = 0.012300 roundd (0.012345 4) = 0.012350, etcNote:里面是一个函数,检查有整数数组(自然数)元素:ISNATURALCheck截图的一个例子。
计算标准正态分布的分位数函数,截短的时间间隔(l u)。方法设计精密的尾巴。Inf values for vectors 'l' and 'u' accepted;%Example: Suppose you desire the median of Z~N(0,1), truncated to Z>9;norminvp(0.5,9,Inf) %our method% in contrast, Matlab's default norminv.m failspl=normcdf(9); norminv(0.5*(1-pl)+pl)Reference: Botev, Z. I. (2016). "The normal law under linear restrictions: simulation and estimation via minimax tilting". Journal of the Royal Statistical Society: Series B (Statistical Methodology). doi:10.1111/rssb.12162For more information, see:https://en.wikipedia.org/wiki/Normal_distribution Quantile_function
这是一个很好的例子的仿真工具和精度。测试文件可以运行等或合并其他发展
这个小文件后会告诉你有多少小数将循环小数开始重复以及有多少数字会重复。例如:1/24 = 0.0416666666 ....所以单元(24日10)将returnNon-terminatingAfter 3无重复数字,有3个重复数字。但在基地6 1/24 = 0.013这将返回:TerminatingTerminates后3位数。
change-baseChange基地数量(基数)——1994年2月b =慢性乙肝(A, A, b)改变数值基础:A、b标量从2到64,A、b的字符串。在基地数量,b, b表达的基础。符号是0 . .9 . .Z一. .z @ &.Example:'-54.13'-chb(chb('-54.13',6,27),27,6)Note: since it operates by converting toand from doubles, it is not perfectly reliablefor very long numbers in high bases.Giampiero Campa 21-2-94
简单的温度转换程序。的代码有一个简单的通用菜单包括发表评论。
这个提交/在一个向量函数返回一个斐波那契代码传递给它的整数。
dfrac2bin函数将一个十进制小数转换为定点表示。负数直接转化为2的补数。输入如下。x:任何小数number_of_bits_int数量:用于表示整数的比特数number_of_bits_fr部分:用于表示分数的比特数格式部分:我们想要的格式输出……“12月”或“本”。sign_required:国旗是否包括符号位在输出表达式。
%亚历克斯可能% 2月5日,2013% decround v1.0% % decround(位置,类型)是一个函数轮任意数量的百分比指定的小数位。% %地方指定舍入应该发生。0是一个%的地方,1是第十位,2是第一百位,等。- %小数点左边的输入指定地方。% %类型是字符串“最近”、“了”,或“向下”和指定的方向%四舍五入应该发生。% %例子:% decround(π2“最近”)% ans = 3.14% % decround(π2了)% ans = 3.15% % decround(π2“下来”)% ans = 3.14% % decround(33628 3,“最近”)% ans = 33600% % decround(33628 3,‘了’)% ans = 33700% % decround(33628 3,“下来”)% ans = 33600
% TOSINGLE TOSINGLE (doublesOnly) % %将调用%的工作区中所有数值变量转换为单精度% %如果doublesOnly是零,那么它将只在调用%的双打工作区单打%
ISEQUALFP检查两个值的平等在浮点precisionIt广为人知,浮点计算有一个基本的限制:不是每个值可以表示完全。这可能会导致奇怪的结果对于那些不熟悉这个限制,特别是“双”是MATLAB的默认数值数据类型。这个函数接受两个浮点值(单引号或双)或数组花车,并返回一个逻辑值指示是否等于在浮点精度。混合单引号和双输入将基于单精度浮点计算。浮点数精度的参考:http://blogs.mathworks.com/loren/2006/08/23/a-glimpse-into-floating-point-accuracy/Usage:yn = isequalfp (a, b) a, b:漂浮或浮点数比较数组yn:逻辑标量结果表明equalityExample: a = 0.3;b = 0.1 * 3;isequal (a, b) % ans = 0 isequalfp (a, b) % ans = 1 c = + 2 * eps (a) % c = 0.3000…isequalfp (a、c) % ans = 0参见:EPS, ISEQUAL
目标是提供示例公用事业和示范ascii字符/符号转换为字节格式的十进制、二进制和十六进制。格式也可以被isHexadecimal和isBinary功能。将执行。另外,bitshift可以使用()。主要执行参考用途:1。usage_asciiTable。m: a .显示ascii表b展示了2位转移。usage_asciiToAndFromBaseValues。m: a . ascii符号转换为二进制小数,和十六进制字节格式转换为二进制,十进制和十六进制字节格式ascii symbols3。usage_shift_rotateBits。m a显示了一些数组转换和旋转*注意:1。仅供参考。If the illustrative demo has more elegant presentation, please do not hesitate to suggest and send feedback to the author.Email: promethevx@yahoo.com.Thank you.Regards,Michael Chan JT
这只是一个网格项目创建一个图类似于无限的象征。
IEEE单精度浮点数是由32位。有时特别是尝试cosimulate FPGA供应商提供浮点核心,它是需要这些数字表示为无符号32位整数。标准模型”类型转换万博1manbetx”块“存储整数”模式没有这样做(小数部分都不传播)。限制:不支持自动HDL代码生成。万博1manbetx
主要执行参考使用:trial_precisionFormat。m *注意:1。下特殊情况,即。正无穷,南DeNorm,并不证明here.2。仅供参考。如果演示演示更优雅的演示,请不要犹豫地建议和反馈发送给作者。电子邮件:promethevx@yahoo.com.Thank。问候,迈克尔·陈JT
允许基本的输出值,数组,方程方程计算用户或数组的大小允许储蓄由用户定义。可以输出符号值和数组。输出图尺寸大小以适应。当前限制是由于最大乳胶产量1300个字符的长度。
这是我整理的小曲玩Java。记住,输入和输出是字符数组。我使用Java而不是象征性的工具箱。用法:c = jhex2dec (h);变量:h = hexdecimal输入字符arrayc =十进制输出字符数组
从任何基础和编码转换为其他基础和编码。基地:基地,基地,基地16日基地64符号用来代表一个值的数量。编码:符号用来代表数字的值在一个特定的地方。以10为底的例子:十进制基地16十六进制:cnvbase(“76”、“0123456789”、“0123456789六边形abcdef”) = ' 4 c 'Base 10到255年基地:cnvbase(“8745”,“0123456789”,[0:255]) =[34 41]的算法转换从一个基地转移到另一个不依赖于将输入转换为一个浮动,从而避免整数大于2 ^ 53精度问题。
= RATPOW (X, Y)计算X到Y elementwise的力量。X和Y都必须真实,必须具有相同的尺寸,除非是一个标量。Y应该有理数的元素。如果有一个无理数,它将被一个有理数近似用一双小分子和分母的老鼠。Y元素也减少到最低的分数。函数返回一个真正的解决方案。具体来说,假设ABS (Y) =。/ B在A和B是coprime(相应的元素没有公因数),然后RATPOW执行X ^ (1 / B)首先,然后提出了它的力量。因此,如果一个元素的B是一个奇数,X的对应元素必须是非负数。否则,产生的错误消息。此外,如果一个元素Y是负的,函数返回X ^的对应元素的倒数(A / B)。
这段代码试图找到如果输入数字(大于100)可以分成三部分,第三部分将第一和第二部分的总和。让abc数量,如果a + b = c, abc传递。示例1:号码= 999919899 + 99 = 198示例2:数量= 1231 + 2 = 3示例3:号码= 2018000120192018 + 0001 = 2019失败的例子:数量= 451和永远不会结果为1。号码= 2010000001没有组合能够随地吐痰,这样数量前两部分之和等于第三部分。
目标是提供样品使用的符号来分配不同的数据。该实用程序可以使用例如信用卡交易或类似的操作。主要执行参考用途:1。usage_symbolDealingDistributor。m交易同样符号数组中指定的数据向量。前处理的内容:textContent = 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5在分出内容:recipientDataSector =[1][2][3][4][5][1][2][3][4][5][1][2][3][4][5][1][2][3][4][5][1][2][3][4][5] *注意:1。仅供参考。如果演示演示更优雅的演示,请不要犹豫地建议和反馈发送给作者。电子邮件:promethevx@yahoo.com.Thank。问候,迈克尔·陈JT