> For the complete documentation index, see [llms.txt](https://augustus-pash.gitbook.io/wasm/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://augustus-pash.gitbook.io/wasm/maths-algorithms/factorial.md).

# Factorial

```javascript
(module
    (func $fact (export "fact") (param $in f32) (result f32)
    
    (local $out f32)
    f32.const 1
    set_local $out

    get_local $in
    (f32.const 0)
    f32.eq
    if $i0
      f32.const 1
      return
    end
    
    get_local $in
    (f32.const 1)
    f32.eq
    if $i0
      f32.const 1
      return
    end

    get_local $in
    (f32.const 2)
    f32.eq
    if $i0
      f32.const 2
      return
    end

    (block $b0
      (loop $l0
        (f32.mul 
          (get_local $out)
          (get_local $in)
        )
        set_local $out

        (f32.sub 
          (get_local $in)
          (f32.const 1)
        )
        tee_local $in
        (f32.const 2)
        f32.eq
        br_if 1

        br 0
      )
    )
    get_local $out
  ))
```
