Bilgisayarlar günah değerlerini nasıl hesaplar? [kapalı]


28

Bir bilgisayar günah değerini nasıl hesaplar? Mantıksal olarak, bunu düşündüğümde tek görünen yol birçok günah değerini belleğe koymaktır ve günah değerinin "hesaplanması" gerektiğinde, verileri belirli bir bellek adresinden çeker. (Örneğin, sin (x)) veriyi, sin (x)) değerini içeren bellek adresinden çekin. Bunu yapmanın tek yolu bu gibi görünüyor. Yoksa bir değerin günahını hesaplamak için kullanılabilecek bir fonksiyon var mı? Gerçekten bir bilgisayarın günahı nasıl temel düzeyde hesapladığını sormaya çalışıyorum. Daha "temel" işlemlerden oluşan farklı bir işlev kullanarak günah değerlerini yaklaşık olarak hesaplamanın bir yolu var mı ve ALU günah değerini yaklaşık olarak belirlemek için birden fazla "temel" işlem yapabilir miydi, yoksa yalnızca değerleri bellekten mi çekiyor?


10
Google "CORDIC". Google "Taylor serisi". Ve hafıza hakkındaki düşünceleriniz net değil.
Eugene Sh.

8
"Bellek" yöntemi, sıkça kullanılan bir optimizasyon tekniğidir ("arama tablosu" adıdır). Ama hayır, başlangıçta bilgisayar buna sahip değil. Ancak <placeholder>, bilgisayarın nasıl hesaplandığını dolaşıyorsanız , google " <placeholder>hesaplama algoritması" nı kullanın. Çoğu durumda SE sormaktan daha iyi çalışır ..
Eugene Sh.

5
CORDIC ve Taylors'a ek olarak, doğrusal olmayan minimax teknikleriyle birleştirilmiş Chebyshev'i de aradığınızdan emin olun. Taylor ortalama hatayı sınırlarken Chebyshev maksimum hatayı sınırlar ve daha hızlı bir şekilde kapanır. Minimax gereklidir, çünkü sabitler sonsuz derecede kesin değildir ve işlemler de değildir. Ve deliler gibi simetrilerden faydalanman gerek!
jonk

3
Sadece çünkü, günlükleri, üsler, pi, kare kökler vb için orada olduğu gibi hesapla günah için kullanılabilecek bir dizi olduğunu farkında mısınız
Andy aka

2
Elbette "ilk etapta" bilgisayar hafızasında içerik olabilir - bilgisayarların nasıl önyüklendiğini düşünüyorsunuz? İlk değerler, salt okunur bellek hücrelerine veya ic'in metalizasyon katmanlarına yerleştirilmiş, sigortalara yakılmış, hapsolmuş şarj olarak depolanan ve aynı zamanda diskten, zımba bantından veya geçiş anahtarlarından okunan - yazılım için kullanılabilir herhangi bir yöntem olan bir devreye bağlanabilir prensip olarak önceden hesaplanmış tablolar için de yararlıdır ve aslında birçok algoritmanın çeşitli sabitlere ihtiyacı vardır. Gereksinimlere, teknolojiye ve hatta diğer ihtiyaçlardan sonra hangi kaynakların kaldığına bağlı olarak en iyisinin ne olduğuna karar verilmelidir.
Chris Stratton,

Yanıtlar:


30

Tipik olarak yüksek çözünürlüklü sin (x) fonksiyonları, sadece vardiya ve toplama / çıkarma ve küçük bir arama tablosu kullanılarak az sayıda yineleme ile gerçekleştirilebilen bir CORDIC (COddiate Rotation DIgital Computer) algoritması ile gerçekleştirilebilir. Orijinal kağıt CORDIC Bilgisayar Tekniği Jack Volder bir FPGA donanımı ile uygulanan (ve benzer bir algoritma FPU'ya sahip olan mikro düzeyde bir donanım FPU uygulanacağına dair) zaman da güzel çalışır 1959'da arasındadır.

Daha düşük çözünürlük için, örneğin bir invertör veya motor VFD (Değişken Frekans Sürücüsü) için sentezlenmiş sinüs dalgası oluşturmak için, enterpolasyonlu veya enterpolasyonsuz bir arama tablosu (LUT) iyi çalışır. Simetri nedeniyle sadece sinüs dalgasının bir kadranına ait değerleri depolamak gerekir.

@Temlib'in işaret ettiği gibi, modern FPU'ların içinde kullanılan algoritmalar , maksimum mutlak hatayı sınırlamak için Remez algoritması gibi bir şey kullanarak yapılan bir değerlendirmenin ardından aralık azaltmayı kullanır . Daha fazla bilgi bu Intel makalesinde bulunabilir Kayan nokta trigonometrik fonksiyonlarının resmi doğrulaması .


2
CORDIC, saf bir donanım sabit işlev dönüşümü içindir (ilk tarihsel uygulaması). FPU'lu bir bilgisayar için polinom yaklaşımları, özel bir CORDIC kaydırma ve ekleme makinesi yerine mevcut aritmetik operatörlerini yeniden kullandıklarından daha hızlı ve daha uygundur.
TEMLIB

1
@TEMLIB Evet, bu geçerli bir nokta, cevabı da ekleyeceğim. CORDIC, HP-35 gibi ilk bilimsel hesap makinelerinde de kullanıldı.
Spehro Pefhany

Bildiğim kadarıyla, CORDIC HP 9100A masa hesap makinesinde ilk donanım uygulamasını yaptı. CORDIC algoritmaları tarafından kullanılan parametreleri depolayan ROM olarak görev yapan, diyotlarla kaplı bir ayak kare etrafında baskılı bir devre kartına sahipti.
Hot Licks,

@HotLicks - Hatalısınız, CORDIC, HP 9100A'dan yaklaşık on yıl önce uçuş navigasyon bilgisayarları için geliştirilmiş ve kullanılmıştır.
Chris Stratton,

@ ChrisStratton - Düzeltilmiş duruyorum.
Hot Licks

14

Çoğu bilgisayar trig kütüphanesi, hız arasında bir doğruluk sağlayan en iyi dengeyi sağlayan polinom yaklaşımlarına dayanır . Örneğin, bir düzine kadar çarpma ve toplama / çıkarma işlemleri, sinüs ve kosinüs için tam tek bir hassasiyet doğruluğu sağlamak için yeterlidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.