> On 26 May 2017, at 11:01, Antonino Ficarra via swift-users 
> <swift-users@swift.org> wrote:
> 
> - Why Swift continues to not support Float80 math functions?
> Example:
> 
> print("\( log( Float( 1.0 ) ) )")
> print("\( log( Double( 1.0 ) ) )")
> // print("\( log( Float80( 1.0 ) ) )")        // don’t compile and logl is 
> unavailable

In this case, it's because 'log' only is defined for Float and Double:

        log(Double) -> Double
        log(x: Double) -> Double
        log(x: Float) -> Float

The problem is that Float80 types are represented in C as long double, and 
currently the importer doesn't import things with long doubles. As a result, 
logl doesn't get imported which is why it's not seen:

     #include <math.h>

     double
     log(double x);

     long double
     logl(long double x);

The ones that do have Float80 support are done by hand, e.g.:

https://github.com/apple/swift/blob/19445cdb0e99eedf22390922e077d86f12123390/stdlib/public/SwiftShims/LibcShims.h#L138

The open bug is here, if you want to follow it:

https://bugs.swift.org/browse/SR-2046

> 
> - Why min and max continue to not act like fmin and fmax (IEEE 754 standard)?
> Example:
> 
> print("\( min( Double.nan,0.0 ) )")   // print nan (!)
> print("\( min( 0.0,Double.nan ) )")   // print 0.0
> print("\( max( Double.nan,0.0 ) )")   // print nan (!)
> print("\( max( 0.0,Double.nan ) )")   // print 0.0
> print("\n")
> 
> print("\( fmin( Double.nan,0.0 ) )")  // print 0.0
> print("\( fmin( 0.0,Double.nan ) )")  // print 0.0
> print("\( fmax( Double.nan,0.0 ) )")  // print 0.0
> print("\( fmax( 0.0,Double.nan ) )")  // print 0.0

There is another open bug here:

https://bugs.swift.org/browse/SR-1011 <https://bugs.swift.org/browse/SR-1011>

Can you add your observations to that?

Thanks,

Alex
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to