1,15 → 1,52 |
|
|
Implementation detail differences |
================================= |
|
FilterFoundry tries to be as compatible with Filter Factory as possible. |
However, results are usually not 100% equal because functions like |
cos, sin, sqr, etc., have different accuracy due to the underlying |
implementation. |
However, there are some differences which are explained in this documentation. |
|
Furthermore, there are the following known differences between |
Filter Foundry and Filter Factory: |
Various implementations |
----------------------- |
|
In the source-code file funcs.c, some functions are implemented twice: |
One instance is the default implementation (older Filter Foundry versions used), |
and one instance is a 100% replica of the Filter Factory code, obtained |
from the "OPER" resource. |
(More information at https://misc.daniel-marschall.de/projects/filter_factory/res_oper.html ) |
If required, the compiler-definitions "use_filterfactory_implementation_*" |
can be set or unset to select the implementation. |
|
In Filter Foundry 1.7.0.8, following functions have been updated to the |
Filter Factory replica: |
- rnd |
- cos |
- sin |
- tan |
- r2x |
- r2y |
- rad |
- c2d |
- c2m |
- sqr |
|
TODO: |
- d |
- m |
- M |
|
|
sqr(x) |
------ |
|
Filter Factory: |
|
sqr(x)=x for x < 0 |
|
Filter Foundry (prior to 1.7.0.8): |
|
sqr(x)=0 for x < 0 |
|
i, u, v (Testcase iuv.afs) |
------- |
|
50,7 → 87,7 |
Filter Foundry initializes it as `r=g=b=255` |
|
|
rnd(a,b) (Testcases rnd_*) |
rnd(a,b) (Testcases rnd*) |
-------- |
|
Filter Factory uses Donald E. Knuth's subtractive random number generator algorithm, |
61,8 → 98,8 |
so that the output of rnd(a,b) is exactly the same now. |
|
|
rnd(a,b) and rst(i) (Testcases rnd*.afs and rst_*.afs) |
------------------- |
rst(i) (Testcases rnd*.afs and rst_*.afs) |
------ |
|
Filter Factory contains an undocumented function that sets the seed for the random number generator. |
|