Re: Proposal: Arbitrary precision native scalar type
| From: | Alexander Pravdin | Date: | Fri, 08 Dec 2023 09:14:10 +0000 |
| Subject: | Re: Proposal: Arbitrary precision native scalar type | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-121960@lists.php.net to get a copy of this message | ||
On Thu, Dec 7, 2023 at 11:27 PM Jordan LeDoux <jordan.ledoux@gmail.com>
wrote:
You are going to run into some very difficult corners on this one. For the
> last... 8 years i guess? I have been working on an arbitrary precision
> library for PHP in userland. It utilizes BCMath, ext-decimal, and GMP,
> depending on what is installed and what kind of operation you are
> performing.
>
> So, the functions that currently accept floats include functions such as
>
sin() or atan(). These
> functions are not at all trivial to do to
> arbitrary precision. In fact, the VAST majority of the work I have done on
> my library has been to handle cases like "What do I do if the user wants
> 2.921 ** 4.293810472934854?" or "How will I guarantee the precision that
> the user requested for tan() in an efficient way?"
>
> Now, libmpdec is going to actually have implementations for most of this
> stuff that you can call directly, but if the PHP function sin()
> isn't
> capable of *outputting* a decimal, then this isn't really
> that much of an
> improvement over the current situation. I mean, it's still something I
> would support, but that's the area where some help from the engine goes a
> VERY long way.
>
In my proposal, builtin functions are capable of returning decimals if
they're fed with decimals.
You're probably also going to need a way for a user to grab certain
> constants to a given precision. I would think e and pi at the least.
>
> I have a lot of experience working on this problem space in PHP, and am
> definitely willing to help. I looked into doing a libmpdec PHP integration
> several years ago, but decided that voters were unlikely to give it a fair
> shot, and so decided against it. If you're willing to try and roll the ball
> up the hill though, I'll definitely help you.
>
Unfortunately, I'm not an expert in precise math. I definitely need help
from experts like you. I appreciate your readiness.
I understand that there are a lot of edge cases. I would propose to
implement basics at first and then decide what to do with edge cases.