Questions in category: Bug (Bug)
软件 >> Calculator >> Bug [57]
<[1] [2] [3] [4] [5] [6] >

1. [BUG|Date:20251023] solve(x!==x^3-x,x,1,100)

Posted by haifeng on 2025-10-23 10:19:48 last update 2025-10-23 10:19:48 | Answers (0) | 收藏


>> solve(x!==x^3-x,x,1,100)
hint> ===*=== syntax error ===*===
         > [plugin] It is NOT a valid expression!
         > type `:help` to view some rules.

------------------------

 

2. [BUG:20251014-2]

Posted by haifeng on 2025-10-14 14:24:27 last update 2025-10-14 15:29:19 | Answers (0) | 收藏


>> A=[1,a,b,c,d;-a,1,e,f,g;-b,-e,1,h,i;-c,-f,-h,1,j;-d,-g,-i,-j,1]
input> [1,a,b,c,d;-a,1,e,f,g;-b,-e,1,h,i;-c,-f,-h,1,j;-d,-g,-i,-j,1]
--------------------

1       a       b       c       d
-a      1       e       f       g
-b      -e      1       h       i
-c      -f      -h      1       j
-d      -g      -i      -j      1

--------------------
>> A
in> A
1       a       b       c       d
-a      1       e       f       g
-b      -e      1       h       i
-c      -f      -h      1       j
-d      -g      -i      -j      1

>> symbol(a,b,c,d,e,f,g,h,i,j)
out> a is a variable for polynomial.
out> b is a variable for polynomial.
out> c is a variable for polynomial.
out> d is a variable for polynomial.
out> e is a variable for polynomial.
out> f is a variable for polynomial.
out> g is a variable for polynomial.
out> h is a variable for polynomial.
out> i is a variable for polynomial.
out> j is a variable for polynomial.

------------------------

>> :poly_vars
a --> x_1
b --> x_2
c --> x_3
d --> x_4
e --> x_5
f --> x_6
g --> x_7
h --> x_8
i --> x_9
j --> x_10

---------------
x, x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10,
---*---*---*---

>> :mode polyn
Switch into polynomial mode.

>> det(A)
out> j*j+h*h+h*j*i-i*h*j+i*i+e*e*j*j+e*e+e*h*f+e*h*j*g-e*i*f*j+e*i*g-f*e*h-f*e*j*i+f*f+f*j*g+f*i*f*i-f*i*h*g+g*e*h*j-g*e*i-g*f*j+g*g-g*h*f*i+g*h*h*g+a*a*j*j+a*a*h*h+a*a*h*j*i-a*a*i*h*j+a*a*i*i+a*a+a*e*b*j*j+a*e*b+a*e*h*c+a*e*h*j*d-a*e*i*c*j+a*e*i*d-a*f*b*h-a*f*b*j*i+a*f*c+a*f*j*d+a*f*i*c*i-a*f*i*h*d+a*g*b*h*j-a*g*b*i-a*g*c*j+a*g*d-a*g*h*c*i+a*g*h*h*d-b*a*e*j*j-b*a*e-b*a*h*f-b*a*h*j*g+b*a*i*f*j-b*a*i*g+b*b*j*j+b*b+b*h*c+b*h*j*d-b*i*c*j+b*i*d+b*f*b*f+b*f*b*j*g-b*f*e*c-b*f*e*j*d-b*f*i*c*g+b*f*i*f*d-b*g*b*f*j+b*g*b*g+b*g*e*c*j-b*g*e*d+b*g*h*c*g-b*g*h*f*d+c*a*e*h+c*a*e*j*i-c*a*f-c*a*j*g-c*a*i*f*i+c*a*i*h*g-c*b*h-c*b*j*i+c*c+c*j*d+c*i*c*i-c*i*h*d-c*e*b*f-c*e*b*j*g+c*e*e*c+c*e*e*j*d+c*e*i*c*g-c*e*i*f*d+c*g*b*f*i-c*g*b*h*g-c*g*e*c*i+c*g*e*h*d+c*g*c*g-c*g*f*d-d*a*e*h*j+d*a*e*i+d*a*f*j-d*a*g+d*a*h*f*i-d*a*h*h*g+d*b*h*j-d*b*i-d*c*j+d*d-d*h*c*i+d*h*h*d+d*e*b*f*j-d*e*b*g-d*e*e*c*j+d*e*e*d-d*e*h*c*g+d*e*h*f*d-d*f*b*f*i+d*f*b*h*g+d*f*e*c*i-d*f*e*h*d-d*f*c*g+d*f*f*d+1

------------------------

>> j*j+h*h+h*j*i-i*h*j+i*i+e*e*j*j+e*e+e*h*f+e*h*j*g-e*i*f*j+e*i*g-f*e*h-f*e*j*i+f*f+f*j*g+f*i*f*i-f*i*h*g+g*e*h*j-g*e*i-g*f*j+g*g-g*h*f*i+g*h*h*g+a*a*j*j+a*a*h*h+a*a*h*j*i-a*a*i*h*j+a*a*i*i+a*a+a*e*b*j*j+a*e*b+a*e*h*c+a*e*h*j*d-a*e*i*c*j+a*e*i*d-a*f*b*h-a*f*b*j*i+a*f*c+a*f*j*d+a*f*i*c*i-a*f*i*h*d+a*g*b*h*j-a*g*b*i-a*g*c*j+a*g*d-a*g*h*c*i+a*g*h*h*d-b*a*e*j*j-b*a*e-b*a*h*f-b*a*h*j*g+b*a*i*f*j-b*a*i*g+b*b*j*j+b*b+b*h*c+b*h*j*d-b*i*c*j+b*i*d+b*f*b*f+b*f*b*j*g-b*f*e*c-b*f*e*j*d-b*f*i*c*g+b*f*i*f*d-b*g*b*f*j+b*g*b*g+b*g*e*c*j-b*g*e*d+b*g*h*c*g-b*g*h*f*d+c*a*e*h+c*a*e*j*i-c*a*f-c*a*j*g-c*a*i*f*i+c*a*i*h*g-c*b*h-c*b*j*i+c*c+c*j*d+c*i*c*i-c*i*h*d-c*e*b*f-c*e*b*j*g+c*e*e*c+c*e*e*j*d+c*e*i*c*g-c*e*i*f*d+c*g*b*f*i-c*g*b*h*g-c*g*e*c*i+c*g*e*h*d+c*g*c*g-c*g*f*d-d*a*e*h*j+d*a*e*i+d*a*f*j-d*a*g+d*a*h*f*i-d*a*h*h*g+d*b*h*j-d*b*i-d*c*j+d*d-d*h*c*i+d*h*h*d+d*e*b*f*j-d*e*b*g-d*e*e*c*j+d*e*e*d-d*e*h*c*g+d*e*h*f*d-d*f*b*f*i+d*f*b*h*g+d*f*e*c*i-d*f*e*h*d-d*f*c*g+d*f*f*d+1

out> a0^2+h^2+i^2+e^2a0^2+e^2+2egha0-2efia0+f^2+f^2i^2-2fghi+g^2+g^2h^2+a^2a0^2+a^2h^2+a^2i^2+a^2+2aceh+2adei-2abfh+2adfa0-2abgi-2acga0+b^2a0^2+b^2+2bdha0-2bcia0+b^2f^2-2bcef+b^2g^2-2bdeg+c^2+c^2i^2-2cdhi+c^2e^2+c^2g^2-2cdfg+d^2+d^2h^2+d^2e^2+d^2f^2+1
------------------------

>> j*j

out> a0^2
------------------------

>>

 


出现这个的原因是使用了不好的字符串替换算法.

j^2 -->  x10^2 ,  然后将 x1 替换为 a, 从而得到 a0^2

目前已经摒弃该替换算法.

 

已修复. 结果是

j^2+h^2+hji-hij+i^2+e^2jj+e^2+ehf+ehjg-eifj+eig-efh-efji+f^2+fjg+fifi-fihg+eghj-egi-fgj+g^2-ghfi+ghhg+a^2jj+a^2hh+a^2hji-a^2ihj+a^2ii+a^2+aebjj+aeb+aehc+aehjd-aeicj+aeid-afbh-afbji+afc+afjd+afici-afihd+agbhj-agbi-agcj+agd-aghci+aghhd-abejj-abe-abhf-abhjg+abifj-abig+b^2jj+b^2+bhc+bhjd-bicj+bid+bfbf+bfbjg-bfec-bfejd-bficg+bfifd-bgbfj+bgbg+bgecj-bged+bghcg-bghfd+aceh+aceji-acf-acjg-acifi+acihg-bch-bcji+c^2+cjd+cici-cihd-cebf-cebjg+ceec+ceejd+ceicg-ceifd+cgbfi-cgbhg-cgeci+cgehd+cgcg-cgfd-adehj+adei+adfj-adg+adhfi-adhhg+bdhj-bdi-cdj+d^2-dhci+dhhd+debfj-debg-deecj+deed-dehcg+dehfd-dfbfi+dfbhg+dfeci-dfehd-dfcg+dffd+1

 

 

3. [BUG:20251014-1]

Posted by haifeng on 2025-10-14 09:27:05 last update 2025-10-14 15:28:56 | Answers (0) | 收藏


>> a^4b^2c+(-a^4b^2c)

out> 2a^4b^2c
------------------------

>> a^4b^2c+(0-a^4b^2c)

out> 0a^4b^2c
------------------------

 

 

>> a^2+(-a^2)

out> 2a^2
------------------------

>> a^1+(-a^1)

out> 0a
------------------------

>> a^3+(-a^3)

out> 0a^3
------------------------

>> a^4+(-a^4)

out> 2a^4
------------------------

 

 

4. [Bug] diff(cos(x^2)*cos(x^2))

Posted by haifeng on 2025-09-14 16:49:11 last update 2025-09-14 17:11:58 | Answers (0) | 收藏


>> diff(cos(x^2)*cos(x^2))
Polyn Mode> my_string = cos[,x,2,^,],cos[,x,2,^,],*
input> cos[x^2]*cos[x^2]

diff> -cos[x^2]*sin[x^2]*x^2*2*1/x-sin[x^2]*x^2*2*1/x*cos[x^2]
 out> -cos(x^2)*sin(x^2)*x^2*2*1/x-sin(x^2)*x^2*2*1/x*cos(x^2)
Polyn Mode> my_string = 0,cos,x,2,^,sin,x,2,^,*,x,2,^,*,2,*,1,*,x,/,-,sin,x,2,^,x,2,^,*,2,*,1,*,x,/,cos,x,2,^,*,-,
Fraction Mode> my_string = 2,
Fraction Mode> my_string = 2,
Fraction Mode> my_string = 2,
Fraction Mode> my_string = 2,
Fraction Mode> my_string = 2,
Fraction Mode> my_string = 2,sinx,4,^,*,1,x,1,^,*,-,
Fraction Mode> my_string = 2,
Fraction Mode> my_string = 1,
Fraction Mode> my_string = 0,1,-,
Fraction Mode> my_string = 1,
Fraction Mode> my_string = 1,
Fraction Mode> my_string = 2,
Fraction Mode> my_string = 1,
Fraction Mode> my_string = 2,
Fraction Mode> my_string = 2,
Fraction Mode> my_string = 1,
Fraction Mode> my_string = 2,
Fraction Mode> my_string = 2,

 

导致无穷循环.

 


直接输入下面的也会导致无穷循环

-cos(x^2)*sin(x^2)*x^2*2*1/x

 g(x)*f(x)/x

5. [Bug] (a+b)^n

Posted by haifeng on 2025-09-09 07:54:44 last update 2025-09-09 07:56:45 | Answers (0) | 收藏


>> (a+b)^n

out> a^62+62a^61b+1891a^60b^2+37820a^59b^3+557845a^58b^4+6471002a^57b^5+61474519a^56b^6+491796152a^55b^7+3381098545a^54b^8+20286591270a^53b^9+107518933731a^52b^10+508271323092a^51b^11+2160153123141a^50b^12+8308281242850a^49b^13+29078984349975a^48b^14+93052749919920a^47b^15+273342452889765a^46b^16+739632519584070a^45b^17+1849081298960175a^44b^18+4282083008118300a^43b^19+9206478467454345a^42b^20+18412956934908690a^41b^21+34315056105966195a^40b^22+59678358445158600a^39b^23+96977332473382725a^38b^24+147405545359541742a^37b^25+209769429934732479a^36b^26+279692573246309972a^35b^27+349615716557887465a^34b^28+409894288378212890a^33b^29+450883717216034179a^32b^30+465428353255261088a^31b^31+450883717216034179a^30b^32+409894288378212890a^29b^33+349615716557887465a^28b^34+279692573246309972a^27b^35+209769429934732479a^26b^36+147405545359541742a^25b^37+96977332473382725a^24b^38+59678358445158600a^23b^39+34315056105966195a^22b^40+18412956934908690a^21b^41+9206478467454345a^20b^42+4282083008118300a^19b^43+1849081298960175a^18b^44+739632519584070a^17b^45+273342452889765a^16b^46+93052749919920a^15b^47+29078984349975a^14b^48+8308281242850a^13b^49+2160153123141a^12b^50+508271323092a^11b^51+107518933731a^10b^52+20286591270a^9b^53+3381098545a^8b^54+491796152a^7b^55+61474519a^6b^56+6471002a^5b^57+557845a^4b^58+37820a^3b^59+1891a^2b^60+62ab^61+b^62
------------------------

 

原因是, 程序将 n 视为 '0'+14, 而 '0'的 ASCII 码是 48, 故这里 n 等于 62.

 

6. [Bug] 计算 $\sin(\cos(1))$ 的值

Posted by haifeng on 2025-06-08 21:12:02 last update 2025-06-10 10:58:07 | Answers (0) | 收藏


>> :mode clox
> print sin(cos(1));
0.85755321584639341575>

 

但真实的值为

\[\sin(\cos(1))\approx 0.5143952585\]

 

这里计算的结果0.85755321584639341575 实际上是cos(cos(1))的值. 怀疑是 cos(1) 压入栈后 cos 又压入一次.

在 v0.634 中已经修复.

 

不过 Linux 版本出现了错误:

>> :mode clox
> print sin(cos(1));
terminate called after throwing an instance of 'std::out_of_range'
  what():  basic_string::substr: __pos (which is 4294967284) > this->size() (which is 1)
Aborted (core dumped)

后来仔细检查了一下, 问题出在 BigNumber.cpp 中的pre_multiplication()函数. 其中有一行

long long pt_pos = multiplication_rs.length() - point_pos;

特别地, 当 multiplication_rs.length() - point_pos 形如 1-13 时, 原本 pt_pos=-12, 但是在32位程序中, 会得到 pt_pos=4294967284, 这在后面的 substr(pt_pos) 语句执行时会出现 out_of_range()的错误. 注意 4294967284+12=4294967296=2^32

问题解决也很简单, 为避免 pt_pos 出现负数, 索性分情况处理. 如下:

LL pt_pos = 0;
int flag = 1;
if (multiplication_rs.length() >= point_pos)
{
pt_pos = multiplication_rs.length() - point_pos;
flag = 1;
}
else
{
pt_pos = point_pos- multiplication_rs.length();
flag = 0;
}
 
 
 

解决日期: 2025-06-10

 

7. [BUG|DATE:20250504]

Posted by haifeng on 2025-05-04 09:51:02 last update 2025-05-05 21:22:18 | Answers (0) | 收藏


>> sqrtn(87178291200,11)
out> 6.1100000010

------------------------

>> 6.1100000010^11
in> 6.1100000010^11

out> 443050584.100352487638815091199115864701330238715760487794319408223063072477872936356617053265500067210000001
------------------------

 


目前暂时解决了问题. 但是运算速度非常慢.

当 n<=10 采用原来的算法, 当 n>10 时, 采用新的算法(但比较慢).

 

>> sqrtn(87178291200,14)
out> 6.04585517138821600067281457369760000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

------------------------

>> sqrtn(87178291200,3)
out> 4434.07243616048241506183956000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

------------------------

 

8. [BUG]20250430

Posted by haifeng on 2025-04-30 08:35:28 last update 2025-05-01 11:17:16 | Answers (0) | 收藏


[BUG] DATE:20250430

 

>> J=[3^n n*3^(n-1);0 3^n]
input> [3^n,n*3^(n-1);0,3^n]
--------------------

3^n     n*3^(n-1)
0       3^n

--------------------
>> A=[1 2;0 2]
input> [1,2;0,2]
--------------------

1       2
0       2

--------------------
>> A*J

out>
3|1*^n  n*3^(n-1)+2|1*3|1*^n
0       2|1*3|1*^n

------------------------

在 v0.631 版本中已经修正.

--------------------
>> A*J

out>
3^n     n*3^(n-1)+2*3^n
0       2*3^n

------------------------

 

9. [Bug]printRecursiveSeries()的迭代计算问题

Posted by haifeng on 2024-12-01 15:42:57 last update 2025-01-17 11:27:52 | Answers (0) | 收藏


>> printRecursiveSeries((4*x_n+(6*x_n^3+6*x_n^2+4*x_n+10)/(5*x_n^4-9*x_n^2-4*x_n-1))/5,x_n,(0.618),3,\n,\linenumber)
0.618
-0.02921664
-:.:99:9978/5-0.02337331
 
 
------------------------
 
>> printRecursiveSeries((4*(x_n)+(6*(x_n)^3+6*(x_n)^2+4*(x_n)+10)/(5*(x_n)^4-9*(x_n)^2-4*(x_n)-1))/5,x_n,0.618,3,\n,\linenumber)
0.618
-0.02921664
-:.:99:9978/5-0.02337331
 
 
------------------------
 

原因在除法有BUG

>> 9.8/(-0.89)
in> 9.8/(-0.89)
 
out> -:.9;123595
------------------------
 

已在 v0.624 版本中修复.


 

>> printRecursiveSeries(a_n,a_n,1,5,\t)
1       1       1       1       1
 
------------------------
 
>> printRecursiveSeries(a_n,a_n+1,1,5,\t)
1       a_n     a_n     a_n     a_n
 
------------------------
 

10. [Sowya] 多项式的运算仍需加强

Posted by haifeng on 2024-12-01 15:17:11 last update 2025-01-20 14:19:32 | Answers (0) | 收藏


>> x-(1|5x+( -6|5x^3-6|5x^2-4|5x+2)/(5x^4-9x^2-4x^1-1))
in> x-(1|5x+(-6|5x^3-6|5x^2-4|5x+2)/(5x^4-9x^2-4x^1-1))
 
out> 4|5x^1
------------------------

这显然是不对的.

 

 

>> x^2/(x^3+x^2)
in> x^2/(x^3+x^2)
 
out>
 quotient> q(x) = 0
remainder> r(x) = x^2
 
0
------------------------
需要加入一元多项式因式分解的功能, 才能使得除法得以化简.
 

 

<[1] [2] [3] [4] [5] [6] >