typestar

Matemática flotante en WebAssembly

Instrucciones f64, más el cruce explícito desde los enteros.

(module
  ;; f64 carries the usual float instructions; convert_i32_s crosses
  ;; over from the integer world.
  (func (export "hypotenuse") (param $a f64) (param $b f64) (result f64)
    (f64.sqrt
      (f64.add
        (f64.mul (local.get $a) (local.get $a))
        (f64.mul (local.get $b) (local.get $b)))))

  (func (export "mean_of_counts") (param $sum i32) (param $n i32)
        (result f64)
    (f64.div
      (f64.convert_i32_s (local.get $sum))
      (f64.convert_i32_s (local.get $n))))

  (func (export "clamp01") (param $x f64) (result f64)
    (f64.min (f64.max (local.get $x) (f64.const 0)) (f64.const 1))))

Cómo funciona

  1. f64.sqrt y compañía trabajan la pila como las operaciones enteras.
  2. f64.convert_i32_s es la única forma en que un i32 se vuelve f64.
  3. f64.min y f64.max se anidan en un clamp de una expresión.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
17
Caracteres a escribir
559
Tokens
132
Ritmo de tres estrellas
60 tpm

Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 132 segundos.

Escribe este fragmento

Paso 3 de 3 en Números; paso 6 de 28 en Fundamentos del lenguaje.

← Anterior Siguiente →