Обсуждение: Serious Assistance with PostgreSQL True Infinite Arbitrary Precision Maths.
Re: Serious Assistance with PostgreSQL True Infinite Arbitrary Precision Maths.
The answer for you is Pl/Python3u. It can use numpy, which supports infinite precision arithmetic and converting results to double and back. It can also do linked lists. Depending on your age and your preferences, you might try Pl/Perl. I learned Perl in 1993 and have never stopped loving it. It has several modules for the infinite precision arithmetic. My favorite is Math::BigFloat. As for the linked lists, there is List::DoubleLinked module on CPAN. In other words, all procedural extensions can be used to fulfill your requirements. BTW, one of my employers told me that Perl is verboten and that the company has standardized on Python. So I had to learn it. It's not too bad if you're in that sort of things.
Regards
P {margin-top:0;margin-bottom:0;} Dear pgsql-general, I'm after Infinite Precision Integer (ii) or Infinite Precision Rational (ir)type and function support for PostgreSQL, as an easy installationfor two new native types. That are available under freeand open source conditions, for public, private and commercial, freeuse.I am aware of the pgmp project. While I have contacted it and and amawaiting their response, it is the case that the present state of pgmpis not enough for my needs.PostgreSQL does not have a private doubly linked list available,and so I can't assemble all this for myself, given that I do notknow enough about PostgreSQL extensions and the C language.What I am after is True Arbitrary Precision Arithmetic, and not High PrecisionArithmetic. What I seek would be contingent only upon available OS or Hardwarememory.I need arithmetic and comparison support on Integer and Rational (Decimal type)numbers. +, -, *,/,%, ==, !=, <>,>,<, >=, <=. Other important candidates requiredinclude +=, -=, *=, /=, %=.The trick is, that I also need full classical function support as well. What I needfairly well is:cast(ir) returns double precision;cast(double precision) returns ir;cast(ir) returns real;cast(real) return ir;cast(ir) returns numeric;cast(numeric) returns ir;cast(ir) returns decimal;cast(decimal) returns ir;cast(ii) returns bigserial;cast(bigserial) returns ii;cast(ii) returns serial;cast(serial) returns ii;cast(ii) returns smallserial;cast(smallserial) returns ii;cast(ii) returns bigint;cast(bigint) returns ii;cast(ii) returns integer;cast(integer) returns ii;cast(ii) returns smallint;cast(smallint) returns ii;cast(text as ii) returns ii;cast(text as ir) returns ir;cast(ir as text) returns text;cast(ii as text) returns text;cast(ii as ir) returns ir;cast(ir as ii) returns ii;sign(ir input) returns ir;abs(ir input) returns ir;pi(ii places) returns ir;e(ii places) returns ir;power(ir base, ir exponent) returns ir;sqrt(ir input) returns irnroot(ii theroot, ir input) returns ir;log10(ir input) returns ir;loge(ir input) returns ir;log2(ir input) returns ir;factorial(ii input) returns ii;degrees(ir input) returns ir;radians(ir input) returns it;sind(ir input) returns ir;cosd(ir input) returns ir;tand(ir input) returns ir;asind(ir input) returns ir;acosd(ir input) returns ir;atand(ir input) returns ir;sinr(ir input) returns ir;cosr(ir input) returns ir;tanr(ir input) returns ir;asinr(ir input) returns ir;acosr(ir input) returns ir;atanr(ir input) returns ir;The last two sets of functions are forward and inverse trigonometry functions,both in degrees and radians.I also need the update module to install easily. A windows *.exe and *.msi,a Linux *.deb, *.rpm or *.bin.Is there someone or something out there that can get there?
-- Mladen Gogala Database Consultant Tel: (347) 321-1217 https://dbwhisperer.wordpress.com
Sent: Wednesday, 18 August 2021 1:13 PM
To: Mladen Gogala <gogala.mladen@gmail.com>
Subject: Re: Serious Assistance with PostgreSQL True Infinite Arbitrary Precision Maths.
Sent: Wednesday, 18 August 2021 1:05 PM
To: pgsql-general@lists.postgresql.org <pgsql-general@lists.postgresql.org>
Subject: Re: Serious Assistance with PostgreSQL True Infinite Arbitrary Precision Maths.
The answer for you is Pl/Python3u. It can use numpy, which supports infinite precision arithmetic and converting results to double and back. It can also do linked lists. Depending on your age and your preferences, you might try Pl/Perl. I learned Perl in 1993 and have never stopped loving it. It has several modules for the infinite precision arithmetic. My favorite is Math::BigFloat. As for the linked lists, there is List::DoubleLinked module on CPAN. In other words, all procedural extensions can be used to fulfill your requirements. BTW, one of my employers told me that Perl is verboten and that the company has standardized on Python. So I had to learn it. It's not too bad if you're in that sort of things.
Regards
Dear pgsql-general, I'm after Infinite Precision Integer (ii) or Infinite Precision Rational (ir)type and function support for PostgreSQL, as an easy installationfor two new native types. That are available under freeand open source conditions, for public, private and commercial, freeuse.I am aware of the pgmp project. While I have contacted it and and amawaiting their response, it is the case that the present state of pgmpis not enough for my needs.PostgreSQL does not have a private doubly linked list available,and so I can't assemble all this for myself, given that I do notknow enough about PostgreSQL extensions and the C language.What I am after is True Arbitrary Precision Arithmetic, and not High PrecisionArithmetic. What I seek would be contingent only upon available OS or Hardwarememory.I need arithmetic and comparison support on Integer and Rational (Decimal type)numbers. +, -, *,/,%, ==, !=, <>,>,<, >=, <=. Other important candidates requiredinclude +=, -=, *=, /=, %=.The trick is, that I also need full classical function support as well. What I needfairly well is:cast(ir) returns double precision;cast(double precision) returns ir;cast(ir) returns real;cast(real) return ir;cast(ir) returns numeric;cast(numeric) returns ir;cast(ir) returns decimal;cast(decimal) returns ir;cast(ii) returns bigserial;cast(bigserial) returns ii;cast(ii) returns serial;cast(serial) returns ii;cast(ii) returns smallserial;cast(smallserial) returns ii;cast(ii) returns bigint;cast(bigint) returns ii;cast(ii) returns integer;cast(integer) returns ii;cast(ii) returns smallint;cast(smallint) returns ii;cast(text as ii) returns ii;cast(text as ir) returns ir;cast(ir as text) returns text;cast(ii as text) returns text;cast(ii as ir) returns ir;cast(ir as ii) returns ii;sign(ir input) returns ir;abs(ir input) returns ir;pi(ii places) returns ir;e(ii places) returns ir;power(ir base, ir exponent) returns ir;sqrt(ir input) returns irnroot(ii theroot, ir input) returns ir;log10(ir input) returns ir;loge(ir input) returns ir;log2(ir input) returns ir;factorial(ii input) returns ii;degrees(ir input) returns ir;radians(ir input) returns it;sind(ir input) returns ir;cosd(ir input) returns ir;tand(ir input) returns ir;asind(ir input) returns ir;acosd(ir input) returns ir;atand(ir input) returns ir;sinr(ir input) returns ir;cosr(ir input) returns ir;tanr(ir input) returns ir;asinr(ir input) returns ir;acosr(ir input) returns ir;atanr(ir input) returns ir;The last two sets of functions are forward and inverse trigonometry functions,both in degrees and radians.I also need the update module to install easily. A windows *.exe and *.msi,a Linux *.deb, *.rpm or *.bin.Is there someone or something out there that can get there?
-- Mladen Gogala Database Consultant Tel: (347) 321-1217 https://dbwhisperer.wordpress.com
Re: Serious Assistance with PostgreSQL True Infinite Arbitrary Precision Maths.
The library that I have been using so far is ttmath, in GNU C++. That libraryis High Precision, in the end, and does seem to be high precision enough,accurate enough and fast enough for my programs.