Произвольная точность в символике в GNU Octave не работает - PullRequest
2 голосов
/ 19 сентября 2019

Я попытался проверить забавный расчет

x = -80538738812075974
y = 80435758145817515
z = 12602123297335631

x**3+y**3+z**3=42 

с помощью GNU Octave.

Я использовал символический пакет и написал:

>> x = vpa('-80538738812075974')
x = (sym) -80538738812075974.0000000000000
>> y = vpa('80435758145817515')
y = (sym) 80435758145817515.0000000000000
>> z = vpa('12602123297335631')
z = (sym) 12602123297335631.0000000000000
>> vpa(x**3+y**3+z**3)
ans = (sym) -23634890844440363008.0000000000

Итак, ответне 42, даже с цифрами (50).Используя wxMaxima, я получаю правильный результат:

x : -80538738812075974;
y : 80435758145817515;
z : 12602123297335631;
x**3+y**3+z**3;
42

, поэтому цифры в порядке.Можно ли работать с произвольной точностью в GNU Octave?

1 Ответ

1 голос
/ 20 сентября 2019

Я действительно не понимаю, что было не так, но это работает, очевидно, только если все шаги выполняются в правильном порядке (и sym вместо vpa):

setenv PYTHON d:/anaconda3w64/python
pkg load symbolic
syms x y z
x = sym('-80538738812075974')
y = sym('80435758145817515')
z = sym('12602123297335631')
x**3+y**3+z**3

x = (sym) -80538738812075974
y = (sym) 80435758145817515
z = (sym) 12602123297335631
ans = (sym) 42

Таким образом, проблема, наконец, решена.

...