bc
mendukung logaritma natural jika dipanggil dengan -l
bendera. Anda dapat menghitung log basis-10 atau basis-2 dengan itu:
$ bc -l
...
l(100)/l(10)
2.00000000000000000000
l(256)/l(2)
8.00000000000000000007
Saya tidak berpikir ada faktorial bawaan, tapi itu cukup mudah untuk menulis sendiri:
$ 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
Atau:
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
Agar sesuai dengan POSIX, Anda harus menulisnya:
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))
}
Yaitu: nama fungsi karakter tunggal, tidak print
, tidak halt
, tanda kurung diperlukan dalam return(x)
. Jika Anda tidak memerlukan validasi input (di sini untuk bilangan bulat positif), itu hanya:
define f(n) {
if (n < 2) return(1)
return(n * f(n - 1))
}
0!=1
sama seperti1!=1
. Setidaknya, itulah yang dikatakan wikipedia.Orpie adalah yang kalkulator untuk kalkulator dan baris perintah Geeks. Ini mengemulasi kalkulator HP RPN modern, yang tentu saja satu-satunya cara yang benar untuk menghitung.
Jika Anda seorang bidat kalkulator, dibesarkan di TI, Casios, dan semacamnya, ada banyak tutorial RPN online yang dengannya Anda dapat memulai pendidikan ulang Anda. Manual Orpie pada akhirnya akan berguna bagi Anda, setelah Anda mendapatkan cara berpikir RPN.
Untuk menghitung 5! di Orpie, ketik saja seperti yang Anda akan menulis itu: 5 !. Anda dapat menekan di Enterantara mereka untuk mendorong
5
ke tumpukan terlebih dahulu, tetapi itu tidak perlu.Untuk menghitung log 10 (5), ketik 5 Enter ' l o Enter. Anda harus mendorongnya
5
ke tumpukan terlebih dahulu dalam kasus ini, karena keystroke berikutnya bukan operator. Karakter kutipan tunggal itu memasuki mode singkatan perintah, yang memungkinkan Anda mulai mengetiklog10
, yang dapat Anda identifikasi secara unik hanya dengan dua karakter pertama. ( Sebagai gantinyal
, Anda mendapatkan fungsi log naturalln
.)Seperti halnya kalkulator RPN, Anda bisa menjadi sangat cepat dengan Orpie, dengan sedikit latihan.
Orpie ada dalam stok repo Ubuntu. FreeBSD memasukkannya dalam Ports, as
math/orpie
. Pada OS X, Anda dapat menginstalnya melalui Homebrew . Paket pihak ketiga mungkin tersedia untuk OS lain. Membangun dari sumber mungkin sedikit tugas, karena ditulis dalam OCaml , dan Anda mungkin tidak menginstal lingkungan pengembangan OCaml. Mempersiapkannya tidak terlalu sulit.sumber
Selalu ada GNU Octave , emacs dari kalkulator baris perintah (untuk saat Anda menginginkan lingkungan pengembangan yang lengkap dan bahasa pemrograman bawaan untuk kalkulator Anda, dan ribuan add-ons opsional)
atau R jika statistik lebih penting.
Saya kebanyakan hanya menggunakan
bc -l
untuk mendapatkan perpustakaan matematika standar dimuat ... Saya bahkan telahbc
aliasbc -l
. Lihat jawaban Mat untuk info tentang mendefinisikan fungsi faktorial .... meskipunbc
halaman manual mendefinisikannya sebagai:Memeriksa <= 1 daripada == 1 mencegah perulangan tanpa akhir jika Anda memberinya angka negatif (harus berupa kesalahan) atau nol (valid).
sumber
Favorit saya adalah yang ringan, sederhana
W-Calc
. http://w-calc.sourceforge.netAnda tidak harus melihat di manual atau secara manual membuat ulang fungsi-fungsi umum, seperti yang Anda lakukan
bc
- perintah-perintahnya sebagian besar persis apa yang Anda harapkan, jadi ketikkan saja apa yang Anda inginkan dan itu hanya berfungsi. Menguji sesuai pertanyaan Anda - memanglog()
&n!
berfungsi seperti yang diharapkan.(Memang saya belum pernah mendengar tentang Orpie - mungkin pilihan yang lebih baik.)
sumber
Benar-benar berlebihan, tetapi juru bahasa pemrograman adalah kalkulator baris perintah setelah semua:
sumber
Jika Anda memiliki Port Mac:
sumber