Slide 1

Slide 1 text

Tomoki Ota ʲGoݴޠʳුಈখ਺఺

Slide 2

Slide 2 text

f loat32 f loat64 Goͷුಈখ਺఺ܕ 2

Slide 3

Slide 3 text

Goͷුಈখ਺఺ܕ 3

Slide 4

Slide 4 text

Goͷුಈখ਺఺ܕ 1.0001 * 1.0001 = 1.00020001 ؙΊޡࠩͰग़ྗ݁Ռ͸1.0002ʹͳΔ 4

Slide 5

Slide 5 text

খ਺ : ແݶݸଘࡏ͢Δ f loat64 : ༗ݶɻ64bit Goͷුಈখ਺఺ܕ 5

Slide 6

Slide 6 text

ූ߸s, Ծ਺F, ࢦ਺eͷͱ͖ͷ10ਐ਺Ћ Goͷුಈখ਺఺ܕ α = (−1)s × F × 2e 6

Slide 7

Slide 7 text

Goͷුಈখ਺఺ܕ 1.0001 = 1 × 1.000100016593933 × 20 ූ߸s, Ծ਺F, ࢦ਺eͷͱ͖ͷ10ਐ਺Ћ 7

Slide 8

Slide 8 text

୯ਫ਼౓ුಈখ਺఺( f loat32) : ࢦ਺8ϏοτɺԾ਺23Ϗοτ ഒਫ਼౓ුಈখ਺఺ܕ( f loat64) : ࢦ਺11ϏοτɺԾ਺52Ϗοτ Goͷුಈখ਺఺ܕ 8

Slide 9

Slide 9 text

Goͷුಈখ਺఺ܕ ූ߸ ࢦ਺(8bit) Ծ਺(23bit) 0 1111111 00000000000001101000111 9

Slide 10

Slide 10 text

ൺֱ ϓϩηοαʹґଘ͢Δ ಛघͳුಈখ਺఺ ޡࠩͷ஝ੵ ۙࣅ஋Λ࢖͏͜ͱʹΑΔฐ֐ 10

Slide 11

Slide 11 text

ۙࣅ஋Λ࢖͏ͱɺ==Λ࢖༻ͨ͠ൺֱ͕ෆਖ਼֬ʹͳΔ৔߹ ͕͋Δɻ goͷςετϥΠϒϥϦtestify ʹ͸ൺֱ͍ͯ͠Δ஋͕Ўͷ ൣғ಺Ͱ͋Δ͜ͱΛݕࠪ͢ΔͨΊͷInDelta͕ଘࡏ͢Δɻ ൺֱ 11

Slide 12

Slide 12 text

ϓϩηοαʹ͸ɺුಈখ਺఺ԋࢉΛॲཧ͢Δුಈখ਺఺ԋࢉ Ϣχοτ(Floating Point Unit, FPU)͕͋Δɻ ॲཧ݁Ռ͸FPUʹґଘ͢ΔͷͰɺFPU͕ҟͳΔผͷϚγϯͰ ಉ݁͡ՌʹͳΔอূ͸ͳ͍ɻ ͪ͜Β΋ 𝛿 Λߟ͑Δ͜ͱͰղܾ͢Δɻ ϓϩηοαʹґଘ͢Δ 12

Slide 13

Slide 13 text

ϓϩηοαʹ͸ɺුಈখ਺఺ԋࢉΛॲཧ͢Δුಈখ਺఺ԋࢉ Ϣχοτ(Floating Point Unit, FPU)͕͋Δɻ ॲཧ݁Ռ͸FPUʹґଘ͢ΔͷͰɺFPU͕ҟͳΔผͷϚγϯͰ ಉ݁͡ՌʹͳΔอূ͸ͳ͍ɻ ͪ͜Β΋ 𝛿 Λߟ͑Δ͜ͱͰղܾ͢Δɻ ಛघͳුಈখ਺఺਺ 13

Slide 14

Slide 14 text

• ਖ਼ͷແݶେ • ෛͷແݶେ •NaN(Not-a-Number) ಛघͳුಈখ਺఺਺ 14

Slide 15

Slide 15 text

NaN͸f != fΛຬͨ͢།Ұͷුಈখ਺఺਺ ಛघͳුಈখ਺఺਺ 15

Slide 16

Slide 16 text

ಛघͳුಈখ਺఺਺ 16

Slide 17

Slide 17 text

ಛघͳුಈখ਺఺਺ ͜ΕΒ3ͭͷුಈখ਺఺਺ʹ͍ͭͯͷൺֱ͸ɺ math.IsInf(ແݶ)Ͱɺmath.IsNan(NaN)ͰൺֱͰ͖ Δɻ 17

Slide 18

Slide 18 text

ޡࠩͷ஝ੵ(Ճࢉɾݮࢉ) 10000ʹ1.0001ΛnճՃࢉ͢ΔϓϩάϥϜ 18

Slide 19

Slide 19 text

ޡࠩͷ஝ੵ(Ճࢉɾݮࢉ) 1.0001ΛnճՃࢉͯ͠ɺ࠷ޙʹ10000ΛՃࢉ͢ΔϓϩάϥϜ 19

Slide 20

Slide 20 text

ޡࠩͷ஝ੵ(Ճࢉɾݮࢉ) n ਖ਼֬ͳ஋ f1 f2 10 10010.001 10010.001 10010.001 1K 11000.1 11000.0999999993 11000.1 1M 1.0101E+06 1.01009999997614E+06 1.01009999997668E+06 Ճࢉ΍ݮࢉΛ࿈ଓͯ͠ߦ͏৔߹͸ɺେ͖͞ͷ͍ۙ஋Λ·ͱΊͯܭࢉ͔ͯ͠Β େ͖ͳ஋ΛՃࢉɾݮࢉ͢Δͱɺޡ͕ࠩখ͘͞ͳΔɻ 20

Slide 21

Slide 21 text

ޡࠩͷ஝ੵ(৐ࢉɾআࢉ) a × (b + c) a × b + a × c v.s. 21

Slide 22

Slide 22 text

ޡࠩͷ஝ੵ(৐ࢉɾআࢉ) a × (b + c) a × b + a × c v.s. 22

Slide 23

Slide 23 text

ޡࠩͷ஝ੵ(৐ࢉɾআࢉ) a × b + a × c ͷํ͕ޡ͕ࠩগͳ͍ ՃࢉɾݮࢉΑΓ৐ࢉɾՃࢉΛઌʹߦ͏ͱ ޡࠩΛখ͘͢͞Δ͜ͱ͕Ͱ͖Δ 23

Slide 24

Slide 24 text

Goͷ f loat32, f loat64͸ۙࣅ஋ΛͱΔͷͰɺޡ͕ࠩൃੜ͢Δ Ճࢉɾݮࢉ͸ಉܻ͡਺ͷԋࢉΛ·ͱΊͯߦ͏͜ͱͰɺਫ਼౓্͕͕Δ ࢛ଇԋࢉ͕ࠞ߹͢Δ৔߹ɺ৐ࢉͱআࢉΛઌʹߦ͏͜ͱͰɺਫ਼౓্͕͕Δ ·ͱΊ 24