⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cfsim

📁 Calc Software Package for Number Calc
💻
字号:
NAME    cfsim - simplify a value using continued fractionsSYNOPSIS    cfsim(x [,rnd])TYPES    x		real    rnd		integer, defaults to config("cfsim")    return	realDESCRIPTION    If x is not an integer, cfsim(x, rnd) returns either the nearest    above x, or the nearest below x, number with denominator less than    den(x).  If x is an integer, cfsim(x, rnd) returns x + 1, x - 1, or 0.    Which of the possible results is returned is controlled    by bits 0, 1, 3 and 4 of the parameter rnd.    For 0 <= rnd < 4, the sign of the remainder x - cfsim(x, rnd) is    as follows:		rnd		sign of x - cfsim(x, rnd)		0		+, as if rounding down		1		-. as if rounding up		2		sgn(x), as if rounding to zero		3		-sgn(x), as if rounding from zero    This corresponds to the use of rnd for functions like round(x, n, rnd).    If bit 3 or 4 of rnd is set, the lower order bits are ignored; bit 3    is ignored if bit 4 is set.	 Thusi, for rnd > 3, it sufficient to    consider the two cases rnd = 8 and rnd = 16.    If den(x) > 2, cfsim(x, 8) returns the value of the penultimate simple    continued-fraction approximant to x, i.e. if:	x = a_0 + 1/(a_1 + 1/(a_2 + ... + 1/a_n) ...)),    where a_0 is an integer, a_1, ..., a_n are positive integers,    and a_n >= 2, the value returned is that of the continued fraction    obtained by dropping the last quotient 1/a_n.    If den(x) > 2, cfsim(x, 16) returns the nearest number to x with    denominator less than den(x).  In the continued-fraction representation    of x described above, this is given by replacing a_n by a_n - 1.    If den(x) = 2, the definition adopted is to round towards zero for the    approximant case (rnd = 8) and from zero for the "nearest" case (rnd = 16).    For integral x, cfsim(x, 8) returns zero, cfsim(x,16) returns x - sgn(x).    In summary, for cfsim(x, rnd) when rnd = 8 or 16, the results are:	rnd		integer x	half-integer x		den(x) > 2	 8		0		x - sgn(x)/2		approximant	16		x - sgn(x)	x + sgn(x)/2		nearest     From either cfsim(x, 0) and cfsim(x, 1), the other is easily     determined: if one of them has value w, the other has value     (num(x) - num(w))/(den(x) - den(w)).  From x and w one may find     other optimal rational numbers near x; for example, the smallest-     denominator number between x and w is (num(x) + num(w))/(den(x) + den(w)).     If x = n/d and cfsim(x, 8) = u/v, then for k * v < d, the k-th member of     the sequence of nearest approximations to x with decreasing denominators     on the other side of x is (n - k * u)/(d - k * v). This is nearer     to or further from x than u/v according as 2 * k * v < or > d.     Iteration of cfsim(x,8) until an integer is obtained gives a sequence of     "good" approximations to x with decreasing denominators and     correspondingly decreasing accuracy; each denominator is less than half     the preceding denominator.	 (Unlike the "forward" sequence of     continued-fraction approximants these are not necessarily alternately     greater than and less than x.)     Some other properties:     For rnd = 0 or 1 and any x, or rnd = 8 or 16 and x with den(x) > 2:		cfsim(n + x, rnd) = n + cfsim(x, rnd).     This equation also holds for the other values of rnd if n + x and x     have the same sign.     For rnd = 2, 3, 8 or 16, and any x:		cfsim(-x, rnd) = -cfsim(x, rnd).     If rnd = 8 or 16, except for integer x or 1/x for rnd = 8, and     zero x for rnd = 16:		cfsim(1/x, rnd) = 1/cfsim(x, rnd).EXAMPLE    ; c = config("mode", "frac");    ; print cfsim(43/30, 0), cfsim(43/30, 1), cfsim(43/30, 8), cfsim(43/30,16)    10/7 33/23 10/7 33/23    ; x = pi(1e-20); c = config("mode", "frac");    ; while (!isint(x)) {x = cfsim(x,8); if (den(x) < 1e6) print x,:;}    1146408/364913 312689/99532 104348/33215 355/113 22/7 3LIMITS    noneLINK LIBRARY    NUMBER *qcfsim(NUMBER *x, long rnd)SEE ALSO    cfappr## Copyright (C) 1999  Landon Curt Noll#### Calc is open software; you can redistribute it and/or modify it under## the terms of the version 2.1 of the GNU Lesser General Public License## as published by the Free Software Foundation.#### Calc is distributed in the hope that it will be useful, but WITHOUT## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY## or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU Lesser General## Public License for more details.#### A copy of version 2.1 of the GNU Lesser General Public License is## distributed with calc under the filename COPYING-LGPL.  You should have## received a copy with calc; if not, write to Free Software Foundation, Inc.## 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA.#### @(#) $Revision: 29.3 $## @(#) $Id: cfsim,v 29.3 2006/05/07 07:25:46 chongo Exp $## @(#) $Source: /usr/local/src/cmd/calc/help/RCS/cfsim,v $#### Under source code control:	1994/09/30 01:29:45## File existed as early as:	1994#### chongo <was here> /\oo/\	http://www.isthe.com/chongo/## Share and enjoy!  :-)	http://www.isthe.com/chongo/tech/comp/calc/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -