float sayı sorunu

Başlatan saban88, 08 Ekim 2019, 17:29:44

saban88

Alıntı yapılan: fahri- - 14 Ekim 2019, 09:42:55Pic de hangi derleyici ile karşılaşmadınız merak ettim. CCS C derleyicede aynı olay var çünkü.

pic de ilk başlarda pic basic pro kullanıyordum sonradan ccs c ye geçtim ccs c de float ile çok uğraşmamış olabilirim hatırlamıyorum. pic basic pro da zaten float yok.

yldzelektronik

Alıntı yapılan: OptimusPrime - 14 Ekim 2019, 05:54:34Double dogrudan fpu yu devre disi birakir. Ben derleyicinin fpu yu kullandigini dusunmuyorum. Dogrudan asm yide kontrol edebilirsin emin olmak icin. Asagidaki linke de goz at derim.  ::ok

https://community.arm.com/developer/ip-products/processors/b/processors-ip-blog/posts/10-useful-tips-to-using-the-floating-point-unit-on-the-arm-cortex--m4-processor

Hocam M7 mcuların bazılarında (üst segment) double precision fpu var. Acaba bu durumda fpu işlerde double türü kullanıyor olabilir mi?

Bir de m7 de gördüm de m4 de var mı bilmiyorum. fpuda yuvarlama özelliği var. saturation diye geçiyordu sanırım. Ben o konuyu bu tarz küsüratları otomatik yuvarlama olarak algıladım. Acaba yanılıyor muyum?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

z

#17
Saturation yuvarlamadan ayri bir sey.

8 bit isaretli sayilar icin konusursak;

8 bitde en buyuk pozitif sayi +127 dir.

Eger 127 ile 2'yi toplarsan sonuc 129 eder ve 129 verisi -127 demektir.

Halbuki pozitif iki sayinin toplami negatif edemez.  Yukaridaki ornekte overflow durumu olmustur.

Eger matematik rutinlerin bu gibi durumlara dikkat etmezse cok vahim hatalar olur.

Saturation ozelligi aktif edilirse 127+2=127 olur. Yani veri sinirlanir. Bu durumda da sistem hata yapar ama sonuc vahim olmaz.

Aynen 12v ile beslenen opampli devrenin kazanci 10 iken girise 2v girildiginde cikis nasil 20v degil de 12v oluyorsa saturation durumunu dikkate alan rutinler de + ve - yondeki tasma durumlarinda sonuc, bu degerlerden birisine yaslanir.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

yldzelektronik

Alıntı yapılan: z - 15 Ekim 2019, 12:55:30Saturation yuvarlamadan ayri bir sey.

8 bit isaretli sayilar icin konusursak;

8 bitde en buyuk pozitif sayi +127 dir.

Eger 127 ile 2'yi toplarsan sonuc 129 eder ve 129 verisi -127 demektir.

Halbuki pozitif iki sayinin toplami negatif edemez.  Yukaridaki ornekte overflow durumu olmustur.

Eger matematik rutinlerin bu gibi durumlara dikkat etmezse cok vahim hatalar olur.

Saturation ozelligi aktif edilirse 127+2=127 olur. Yani veri sinirlanir. Bu durumda da sistem hata yapar ama sonuc vahim olmaz.

Aynen 12v ile beslenen opampli devrenin kazanci 10 iken girise 2v girildiginde cikis nasil 20v degil de 12v oluyorsa saturation durumunu dikkate alan rutinler de + ve - yondeki tasma durumlarinda sonuc, bu degerlerden birisine yaslanir.


Tamamdır. Ayrıca rounding varmış. İyi oldu abi söylediğin.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

OptimusPrime

Double precision fpu double degiskene delalet eder  :)
Ama yinede C kodunun ASM olarak ne urettigine ve derleyicinin fpu yu kullanmasina nasil zorlanabilecegine goz atilmasinda fayda var.  ;)
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||