Yanıtlar:
bc
-l
bayrakla çağrıldığında doğal logaritmayı destekler . Base-10 veya base-2 günlüğünü onunla hesaplayabilirsiniz:
$ bc -l
...
l(100)/l(10)
2.00000000000000000000
l(256)/l(2)
8.00000000000000000007
Yerleşik bir faktöriyel olduğunu düşünmüyorum, ancak bu kendinizi yazmak için yeterince kolay:
$ bc
...
define fact_rec (n) {
if (n < 0) {
print "oops";
halt;
}
if (n < 2) return 1;
return n*fact_rec(n-1);
}
fact_rec(5)
120
Veya:
define fact_it (n) {
if (n < 0) {
print "oops";
halt;
}
res = 1;
for (; n > 1; n--) {
res *= n;
}
return res;
}
fact_it(100)
93326215443944152681699238856266700490715968264381621468592963895217\
59999322991560894146397615651828625369792082722375825118521091686400\
0000000000000000000000
POSIX uyumlu olmak için şunu yazmanız gerekir:
define f(n) {
auto s, m
if (n <= 0) {
"Invalid input: "
n
return(-1)
}
s = scale
scale = 0
m = n / 1
scale = s
if (n != m) {
"Invalid input: "
n
return(-1)
}
if (n < 2) return(1)
return(n * f(n - 1))
}
Yani: tek karakter işlev adı, hayır print
, hayır halt
, parantez içinde gereklidir return(x)
. Giriş doğrulamasına ihtiyacınız yoksa (burada pozitif tamsayı numaraları için), sadece:
define f(n) {
if (n < 2) return(1)
return(n * f(n - 1))
}
0!=1
tıpkı 1!=1
. En azından wikipedia böyle söylüyor.
Orpie olduğu hesap makinesi ve komut satırı inekler için hesap makinesi. Elbette hesaplamanın tek gerçek yolu olan modern bir HP RPN hesap makinesini öykünür.
TIs, Casios ve benzerleri üzerinde yükselen bir hesap makinesi iseniz, yeniden eğitiminize başlayabileceğiniz birçok çevrimiçi RPN öğreticisi vardır . RPN Düşünme Biçimi'ni öğrendikten sonra Orpie el kitabı sizin için biraz yararlı olacaktır.
5 hesaplamak için! Eğer yazacağınız olarak Orpie içinde, sadece yazın: 5 !. Önce yığının üzerine Enteritmek 5
için aralarına basabilirsiniz , ancak gerekli değildir.
İşlem kaydı 10'u (5) hesaplamak için yazın 5 Enter ' l o Enter. 5
Bu durumda ilk önce yığının üstüne itmeniz gerekir , çünkü bir sonraki tuş vuruşu bir operatör değildir. Bu tek tırnak karakteri log10
, sadece ilk iki karakterle benzersiz bir şekilde tanımlayabileceğiniz yazmaya başlamanıza izin veren komut kısaltma moduna girer . ( bunun yerine l
tek başına doğal günlük işlevini alır ln
.)
Herhangi bir RPN hesap makinesinde olduğu gibi, biraz pratik yaparak Orpie ile gerçekten hızlı bir şekilde alabilirsiniz .
Orpie stokta Ubuntu depolarında. FreeBSD bunu Ports, as gibi içerir math/orpie
. OS X'te, Homebrew üzerinden kurabilirsiniz . Diğer işletim sistemleri için üçüncü taraf paketleri bulunabilir. OCaml ile yazılmış olduğundan ve muhtemelen bir OCaml geliştirme ortamına sahip olmadığınızdan , kaynaktan inşa etmek biraz angarya olabilir . Bununla birlikte, bir kurulum yapmak özellikle zor değildir.
Her zaman GNU Octave , komut satırı hesap makinelerinin emac'ları vardır (hesap makinenize yerleşik tam bir geliştirme ortamı ve programlama dili ve binlerce isteğe bağlı eklenti istediğinizde)
veya R istatistiği sizin için daha uygunsa.
Çoğunlukla bc -l
standart matematik kütüphanesini yüklemek için kullanıyorum ... Hatta bc
takma ad verdim bc -l
. Faktöriyel bir işlevi tanımlama hakkında bilgi için Mat'ın cevabına bakın .... bc
man sayfası bunu şu şekilde tanımlasa da:
define f (x) {
if (x <= 1) return (1);
return (f(x-1) * x);
}
== 1 yerine <= 1 olup olmadığını denetlemek, negatif bir sayı (hata olması gerekir) veya sıfır (geçerli) beslemek için sonsuz bir döngüyü önler.
En sevdiğim hafif, basit W-Calc
.
http://w-calc.sourceforge.net
El kitabına bakmanız veya ortak fonksiyonları manuel olarak yeniden oluşturmanız gerekmiyor, tıpkı sizin yaptığınız gibi bc
- komutlar çoğunlukla tam olarak beklediğiniz şeydir, bu yüzden sadece istediğinizi yazın ve sadece çalışır. Sorunuza göre test - gerçekten log()
& n!
beklendiği gibi çalışın.
(Kuşkusuz Orpie'yi duymadım - çok daha iyi bir seçenek olabilir.)
Mac Bağlantı Noktalarınız varsa:
$ sudo /opt/local/bin/port install orpie