[rust-dev] Appeal for CORRECT, capable, future-proof math, pre-1.0

Huon Wilson dbau.pp at gmail.com
Fri Jan 10 22:05:17 PST 2014


On 11/01/14 16:58, Isaac Dupree wrote:
> Scheme's numeric tower is one of the best in extant languages.  Take a 
> look at it.  Of course, its dynamic typing is poorly suited for Rust.
>
> Arbitrary-precision arithmetic can get you mathematically perfect 
> integers and rational numbers, but not real numbers.  There are an 
> uncountably infinite number of real numbers and sophisticated computer 
> algebra systems are devoted the problem (or estimates are used, or you 
> become unable to compare two real numbers for equality).  The MPFR C 
> library implements arbitrarily high precision floating point, but that 
> still has all the pitfalls of floating-point that you complain about. 
> For starters, try representing sqrt(2) and testing its equality with 
> e^(0.5 ln 2).
>
> In general, Rust is a systems language, so fixed-size integral types 
> are important to have.  They are better-behaved than in C and C++ in 
> that signed types are modulo, not undefined behaviour, on overflow.  
> It could be nice to have integral types that are task-failure on 
> overflow as an option too. 

We do already have some Checked* traits (using the LLVM intrinsics 
internally), which let you have task failure as one possibility on 
overflow. e.g. 
http://static.rust-lang.org/doc/master/std/num/trait.CheckedAdd.html 
(and Mul, Sub, Div too).


Huon


> As you note, bignum integers are important too; it's good they're 
> available.  I think bignum rationals would be a fine additional choice 
> to have (Haskell and GMP offer them, for example).
>
> -Isaac
>
>
> On 01/11/2014 12:15 AM, Lee Braiden wrote:
>> This may be go nowhere, especially so late in Rust's development, but I
>> feel like this is an important, relatively small change (though a
>> high-profile one).  I believe it could have a large, positive impact in
>> terms of targeting new developer communities, gaining more libraries and
>> applications, giving a better impression of the language, AND on
>> performance and futureproofing.
>>
>> However, a lot of people who are interested in performance will probably
>> baulk at this, on first sight.  If you're in that group, let me
>> encourage you to keep reading, at least until the points on performance
>> /improvements/.  Then baulk, if you like ;)
>>
>> Also, I said it in the post as well, but it's late here, so apologies
>> for any readability / editing issues.  I tried, but sleep beckons ;)
>>
>>
>> http://blog.irukado.org/2014/01/an-appeal-for-correct-capable-future-proof-math-in-nascent-programming-languages/ 
>>
>>
>>
>> -- 
>> Lee
>>
>>
>>
>> _______________________________________________
>> Rust-dev mailing list
>> Rust-dev at mozilla.org
>> https://mail.mozilla.org/listinfo/rust-dev
>>
>
> _______________________________________________
> Rust-dev mailing list
> Rust-dev at mozilla.org
> https://mail.mozilla.org/listinfo/rust-dev



More information about the Rust-dev mailing list