class JLB_NovaContraction(mmf.ulb:Contraction) {
; The Nova formula as a Contraction.
public:
; @param pz
; @param pc
; @return the new pz
complex func Iterate(complex pz, complex pc)
if (@p_std)
return pz - @relax*(pz*pz*pz-1) / (3*pz*pz) + pc
else
return pz - @relax * (pz^@p_power-1) / (@p_power * pz^(@p_power-1)) + pc
endif
endfunc
private:
default:
title = "Nova"
int param v_Novacontraction
caption = "Version (Nova_Contraction)"
default = 100
hint = "This version parameter is used to detect when a change has \
been made to the formula that is incompatible with the \
previous version. When that happens, this field will reflect \
the old version number to alert you to the fact that an \
alternate rendering is being used."
visible = @v_Novacontraction < 100
endparam
bool param p_std
caption = "Standard"
default = true
endparam
param relax
caption = "Relaxation"
default = (1,0)
hint = "This can be used to slow down the convergence of \
the formula."
endparam
complex param p_power
caption = "Power"
default = (3,0)
visible = !@p_std
endparam
}