[swift-evolution] f suffix for float32 literals, h suffix for float16 literals

Stephen Canon scanon at apple.com
Fri Nov 3 14:37:08 CDT 2017



> On Nov 3, 2017, at 3:33 PM, Kelvin Ma <kelvin13ma at gmail.com> wrote:
> 
> 
> 
> On Fri, Nov 3, 2017 at 2:05 PM, Steve Canon via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
> If/when 16b floats were added to the standard lib, you would just write:
> 
>     let vertexData: [Float16] = [ 1, 0, 0.5, 1 ]
> 
> I should note that something like vertex coordinates is usually better modeled with a more specific type than [Float], like SCNVector4 or simd.float4 or your own type, which also solves this problem:
> 
>     import SceneKit
>     let vertexData = SCNVector4(1, 0, 0.5, 1)
> 
>     import simd
>     let vertexData = float4(1, 0, 0.5, 1)
> 
> (NB both of these frameworks are Apple-specific).
> 
> - Steve
> 
> Sent from my iPhone 
> 
> If @_fixed_layout was supported this would be sensible, but most graphics frameworks expect a plain buffer of floats and the packing order is implicit. We can’t model vertex vectors with Swift structs because we can’t safely pointer-cast them to an array of floats.

SCNVector4 is a C struct and hence has fixed layout. simd.float4 fixes its ordering by having a single field that is an LLVM ext-vector type. Both can be safely converted to a buffer of floats.

– Steve
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20171103/ae1654f1/attachment.html>


More information about the swift-evolution mailing list