Prompt: Create me a function that computes the area of a triangle.
Motoko
import Float "mo:base/Float";
public func triangleArea(a : Float, b : Float, c : Float) : Float {
let s = (a + b + c) / 2.0;
Float.sqrt(s * (s - a) * (s - b) * (s - c))
};
Rust
pub fn triangle_area(a: f64, b: f64, c: f64) -> f64 {
let s = (a + b + c) / 2.0;
(s * (s - a) * (s - b) * (s - c)).sqrt()
}
Haskell
triangleArea :: Floating a => a -> a -> a -> a
triangleArea a b c =
let s = (a + b + c) / 2
in sqrt (s * (s - a) * (s - b) * (s - c))
F#
let triangleArea (a: float) (b: float) (c: float) : float =
let s = (a + b + c) / 2.0
sqrt (s * (s - a) * (s - b) * (s - c))
NASM
global triangle_area
extern sqrt
section .text
triangle_area:
; xmm0 = a, xmm1 = b, xmm2 = c
movapd xmm3, xmm0
addsd xmm3, xmm1
addsd xmm3, xmm2
mulsd xmm3, qword [half] ; s
movapd xmm4, xmm3
subsd xmm4, xmm0
mulsd xmm4, xmm3
movapd xmm5, xmm3
subsd xmm5, xmm1
mulsd xmm4, xmm5
movapd xmm5, xmm3
subsd xmm5, xmm2
mulsd xmm4, xmm5
movapd xmm0, xmm4
sub rsp, 8 ; align stack
call sqrt
add rsp, 8
ret
section .rodata
half: dq 0.5
BASH
triangle_area() {
local a="$1"
local b="$2"
local c="$3"
awk -v a="$a" -v b="$b" -v c="$c" '
BEGIN {
s = (a + b + c) / 2
area = sqrt(s * (s - a) * (s - b) * (s - c))
print area
}'
}
EXCEL
=SQRT(((A1+B1+C1)/2)*(((A1+B1+C1)/2)-A1)*(((A1+B1+C1)/2)-B1)*(((A1+B1+C1)/2)-C1))
APL
triangleArea ← {
s ← (+/⍵) ÷ 2
√(s × ×/ (s - ⍵))
}
J
triangleArea =: 3 : 0
s =. (+/ y) % 2
%: s * */ (s - y)
)
PostScript
/triangleArea {
/c exch def
/b exch def
/a exch def
/s a b add c add 2 div def
s s a sub mul
s b sub mul
s c sub mul
sqrt
} def
Forth
: triangle-area ( a b c -- area )
f>s f>s f>s
fover fover f+ f+ 2e f/ \ s
fdup fover f- f* \ s*(s-a)
fover fover f- f* \ * (s-b)
fover f- f* \ * (s-c)
fsqrt ;