SE-0246: GENERIC MATH(S) FUNCTIONSOTEMACHI.SWIFT #3
View Slide
SE-0246: GENERIC MATH(S) FUNCTIONSࣗݾհ▸ S_Shimotori▸ ඍੵઢܗͰ͖ͳ͔ͬͨΑ…
SE-0246: GENERIC MATH(S) FUNCTIONS
ֶͬΆ͍ܭࢉ͕͍Ζ͍ΖͰ͖Δ༧ײʂʂʂʂ
SE-0246: GENERIC MATH(S) FUNCTIONSࠓ͢͜ͱ▸ SE-0246ͷ༰▸ with modificationsͬͯͳʹ▸ Ϟδϡʔϧ໊Ͳ͏͢Δ▸ logؔͷ໊લͲ͏͢Δ
SE-0246ͷ༰
SE-0246: GENERIC MATH(S) FUNCTIONSSE-0246ͷϞνϕ▸ C mathϥΠϒϥϦͷݺͼग़͕͠Πέͯͳ͍▸ Darwin͔GNU C͔Ͱimportʹذ͕ൃੜ͢Δ▸ protocol (Binary)FloatingPoint͕Πέͯͳ͍▸ CGFloat, Double, Float, Float80 \in BinaryFloatingPoint▸ ͜ͷprotocolΛͬͯܭࢉΛߟ͑Δͷෆศ
SE-0246: GENERIC MATH(S) FUNCTIONSSE-0246ͰఏҊ͞Εͨ͜ͱ▸ protocol ElementaryFunctionsͱprotocol RealΛ࡞Δ▸ ॳؔηοτ \subset ࣮ؔηοτ▸ staticؔͷ͔ͨͪͰܭࢉͰ͖ΔΑ͏ʹ͢Δprotocol▸ ͜ΕͰࠓޙͬͱ֦ு͍͚ͯ͠Δͧʂ▸ ෳૉͱ͔SIMDͱ͔▸ IEEE 754ͷ࣮͓͢͢ΊؔΛίϯϓ͢Δͱ͔
SE-0246: GENERIC MATH(S) FUNCTIONS৽چൺֱ - SINؔΛ͏// 今のSwiftlet value: CGFloat = 0sin(value)// SE-0246// extension CGFloat: ElementaryFunctionCGFloat.sin(0)
SE-0246: GENERIC MATH(S) FUNCTIONS৽چൺֱ - SIGMOIDؔΛఆٛ͢Δ// エラー。全浮動小数点数型を一括で扱えないfunc sigmoid(_ x: T) -> T {return 1/(1 + exp(-x)) }// SE-0246ならElementaryFunctionsと一言書けばよくなるfunc sigmoid(_ x: T) -> T {return 1/(1 + T.exp(-x)) }σ(x) =11 + e−x※γάϞΠυؔ
WITH MODIFICATION ͬͯͳʹ
SE-0246: GENERIC MATH(S) FUNCTIONSACCEPTED **WITH MODIFICATIONS**▸ Կ͔ٞΛͨ͠ܗ͕͋Δʂ
SE-0246: GENERIC MATH(S) FUNCTIONSACCEPT͞ΕΔ·Ͱʹมߋ͞Εͨ͜ͱ▸ Ұ෦ͷ͕ؔॳ͔ؔΒ࣮ؔߦ͖ʹ͞Εͨ▸ atan2ඇ࣮ΛҾʹऔΒͳ͍▸ erf, erfc, gamma, logGammaҰ෦ڥͰ͑ͳ͍͠ɺਖ਼֬ʹ ॳؔ͡Όͳ͍▸ ࣮ؔʹՃ: hypot▸ ໊લۭؒͷมߋ▸ ؔΛ“Math”Լʹ·ͱΊΑ͏ͱࢥ͚ͬͯͨͲΊͨ
ϞδϡʔϧͲ͏͢Δ
SE-0246: GENERIC MATH(S) FUNCTIONSϞδϡʔϧͲ͏͢Δ▸ MathϞδϡʔϧͰimportΛղܾ͢ΔͭΓ…ͩͬͨ▸ αʔυύʔςΟϥΠϒϥϦͰ͢ͰʹMathͷ໊Λ͍ͬͯΔ▸ SwiftϞδϡʔϧʹ͢ͰʹmathͬΆ͍͕ؔ͋Δ↓ͱΓ͋͑ͣࠓճSwiftʹಥͬࠐΉ͚ͩʹ͠Α͏ͥʂ
LOGؔͷ໊લ Ͳ͏͢Δ
SE-0246: GENERIC MATH(S) FUNCTIONS֤ݴޠͷରؔͷ໊લࣗવର ৗ༻ର ΧελϜSwift log log10 N/A log log10 N/Ajava.lang.Math log log10 N/Akotlin.math ln log10 log
SE-0246: GENERIC MATH(S) FUNCTIONSͰɺͲ͏ͯ͠SWIFTLNͰͳ͘LOGʹͨ͠ͷ▸ C++͕ͦ͏͔ͩΒ▸ lnͩͱ໊લ͕͗͢Δ͔Β▸ inͱฆΒΘ͍͔͠Β{ x in ln(x) }{ x in log(x) }
·ͱΊ
SE-0246: GENERIC MATH(S) FUNCTIONSSE-0246͜Μͳײ͡ʂ▸ ͍Ζ͍Ζͳܭࢉ͕Ͱ͖ΔΑ͏ʹͳΔΑ▸ ࠓޙ͞ΒʹͰ͖Δ͜ͱ͕૿͑ͦ͏ͩΑ▸ ࣮͚ͬͦͨ͘͞͠ͲޓੑςετʁͰࣦഊ͔ͨ͠Βෆे
SE-0246: GENERIC MATH(S) FUNCTIONSࢀߟจݙͱ͔ͦ͏͍͏ͷ▸ swift-evolution/0246-mathable.md at master · apple/swift-evolution▸ Math functions for Swift by stephentyrone · Pull Request #23140 · apple/swift▸ Revert SE-0246 by stephentyrone · Pull Request #23800 · apple/swift▸ SE-0246: Generic Math(s) Functions - Proposal Reviews - Swift Forums▸ [Accepted with Modifications] SE-0246: Generic Math Functions -Announcements - Swift Forums▸ Generic “math functions” - Pitches - Swift Forums▸ apple/swift-source-compat-suite: The infrastructure and project indexcomprising the Swift source compatibility suite.
SE-0246: GENERIC MATH(S) FUNCTIONSࢀߟจݙͱ͔ͦ͏͍͏ͷ▸ 754-2008 - IEEE Standard for Floating-Point Arithmetic - IEEE Standard▸ (math.h) - C++ Reference▸ Math (Java SE 12 & JDK 12 )▸ kotlin.math - Kotlin Programming Language