Compile
✖
Compile
creates a compiled function that evaluates expr assuming numerical values of the xi.
assumes that xi is a rank ni array of objects, each of a type that matches ti.
assumes that subexpressions in expr that match pi are of types that match pti.
Details and Options


- The types handled by Compile are:
-
_Integer machine‐size integer _Real machine‐precision approximate real number (default) _Complex machine‐precision approximate complex number True False logical variable - Nested lists given as input to a compiled function must be full arrays of numbers.
- Compile handles numerical functions, matrix operations, procedural programming constructs, list manipulation functions, and functional programming constructs, etc.
- Compile generates a CompiledFunction object.
- Compiled code does not handle numerical precision and local variables in the same way as ordinary Wolfram Language code.
- If a compiled function cannot be evaluated with particular arguments using compiled code, ordinary Wolfram Language code is used instead.
- Ordinary Wolfram Language code can be called from within compiled code. Results obtained from the Wolfram Language code are assumed to be approximate real numbers, unless specified otherwise by the third argument of Compile.
- The number of times and the order in which objects are evaluated by Compile may be different from ordinary Wolfram Language code.
- Compile has attribute HoldAll, and does not by default do any evaluation before compilation.
- You can use Compile[…,Evaluate[expr]] to specify that expr should be evaluated symbolically before compilation.
- The following options can be given:
-
CompilationOptions Automatic options for the compilation process CompilationTarget $CompilationTarget the target runtime for code generation Parallelization Automatic parallel controls for compiled function execution RuntimeAttributes {} evaluation attributes for the compiled function RuntimeOptions Automatic runtime options for the compiled function
Examples
open allclose allBasic Examples (1)Summary of the most common use cases
Compile the function Sin[x]+x^2-1/(1-x) for machine real x:

https://wolfram.com/xid/0giqxe-f055ga

The CompiledFunction evaluates with machine numbers:

https://wolfram.com/xid/0giqxe-e25ts


https://wolfram.com/xid/0giqxe-xk5gw

Scope (1)Survey of the scope of standard use cases
Options (9)Common values & functionality for each option
CompilationOptions (1)
The default setting of Automatic generates more efficient code by avoiding computing the same result more than once:

https://wolfram.com/xid/0giqxe-xgnv2

When the optimization level is reduced, less efficient code is generated:

https://wolfram.com/xid/0giqxe-hoh

CompilationTarget (2)
This generates C code and links it back in for execution:

https://wolfram.com/xid/0giqxe-gpxxqy

This is a larger example that demonstrates the speed advantages of C code generation:

https://wolfram.com/xid/0giqxe-d6blo1

The default operation runs more slowly:

https://wolfram.com/xid/0giqxe-e8pv6d

Parallelization (2)
Listable compiled functions can execute in parallel using threads:

https://wolfram.com/xid/0giqxe-hv8mo4

This shows the operation running sequentially:

https://wolfram.com/xid/0giqxe-g974g6

Typically, $ProcessorCount is used to determine how many threads to be used:

https://wolfram.com/xid/0giqxe-bo7f4z

You can combine parallel operations with C code generation to get even faster operation:

https://wolfram.com/xid/0giqxe-ga9ju1

RuntimeAttributes (3)
This creates a listable compiled function:

https://wolfram.com/xid/0giqxe-bid3j6

It operates on a single input in normal fashion:

https://wolfram.com/xid/0giqxe-eiexky

When the arguments include a list that does not match the input specification, it threads over that argument:

https://wolfram.com/xid/0giqxe-h7ile

If there is a branch, listability needs a function to be defined, as shown below using Function:

https://wolfram.com/xid/0giqxe-cz9qk

A listable compiled function is equivalent but executes faster:

https://wolfram.com/xid/0giqxe-dttx1n

A listable compiled function can run in parallel, giving an acceleration on multicore machines:

https://wolfram.com/xid/0giqxe-di8bmb

Using the listable attribute is typically faster than invoking CompiledFunction many times:

https://wolfram.com/xid/0giqxe-dgcinn

https://wolfram.com/xid/0giqxe-jpskmh


https://wolfram.com/xid/0giqxe-lccazo

Using parallelization can give an even greater speedup:

https://wolfram.com/xid/0giqxe-cc4p48

https://wolfram.com/xid/0giqxe-h9kc53


https://wolfram.com/xid/0giqxe-cvkl2v

A detailed plot of the basins of attraction for Newton's method for :

https://wolfram.com/xid/0giqxe-c08wwp

RuntimeOptions (1)
Possible Issues (1)Common pitfalls and unexpected behavior
With the default setting for RuntimeOptions intermediate overflow may be missed:

https://wolfram.com/xid/0giqxe-f5ssdn

With the "Quality" setting, intermediate terms are tested for overflow:

https://wolfram.com/xid/0giqxe-ei2zij




Neat Examples (1)Surprising or curious use cases
Perlin noise is a common algorithm used to generate procedural textures:

https://wolfram.com/xid/0giqxe-f1enoy
This defines the parameters to the Perlin noise function and uses the Perlin function to generate a landscape procedural texture:

https://wolfram.com/xid/0giqxe-c937y

The same noise function, with different parameters and color set, can simulate wood grain:

https://wolfram.com/xid/0giqxe-boqarr

You can apply textures to 3D objects:

https://wolfram.com/xid/0giqxe-k1ucg

Wolfram Research (1991), Compile, Wolfram Language function, https://reference.wolfram.com/language/ref/Compile.html (updated 2010).
Text
Wolfram Research (1991), Compile, Wolfram Language function, https://reference.wolfram.com/language/ref/Compile.html (updated 2010).
Wolfram Research (1991), Compile, Wolfram Language function, https://reference.wolfram.com/language/ref/Compile.html (updated 2010).
CMS
Wolfram Language. 1991. "Compile." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2010. https://reference.wolfram.com/language/ref/Compile.html.
Wolfram Language. 1991. "Compile." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2010. https://reference.wolfram.com/language/ref/Compile.html.
APA
Wolfram Language. (1991). Compile. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Compile.html
Wolfram Language. (1991). Compile. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Compile.html
BibTeX
@misc{reference.wolfram_2025_compile, author="Wolfram Research", title="{Compile}", year="2010", howpublished="\url{https://reference.wolfram.com/language/ref/Compile.html}", note=[Accessed: 19-June-2025
]}
BibLaTeX
@online{reference.wolfram_2025_compile, organization={Wolfram Research}, title={Compile}, year={2010}, url={https://reference.wolfram.com/language/ref/Compile.html}, note=[Accessed: 19-June-2025
]}