\[\sin \left(x + \varepsilon\right) - \sin x\]
Test:
NMSE example 3.3
Bits:
128 bits
Bits error versus x
Bits error versus eps
Time: 11.4 s
Input Error: 16.8
Output Error: 0.5
Log:
Profile: 🕒
\(\begin{cases} (e^{\log_* (1 + \sin x \cdot \cos \varepsilon)} - 1)^* + \left(\cos x \cdot \sin \varepsilon - \sin x\right) & \text{when } \varepsilon \le -0.00024292355f0 \\ \cos x \cdot \sin \varepsilon & \text{when } \varepsilon \le 1.6179318f-10 \\ \sin x \cdot \cos \varepsilon + \left((e^{\log_* (1 + \cos x \cdot \sin \varepsilon)} - 1)^* - \sin x\right) & \text{otherwise} \end{cases}\)

    if eps < -0.00024292355f0

    1. Started with
      \[\sin \left(x + \varepsilon\right) - \sin x\]
      13.8
    2. Using strategy rm
      13.8
    3. Applied sin-sum to get
      \[\color{red}{\sin \left(x + \varepsilon\right)} - \sin x \leadsto \color{blue}{\left(\sin x \cdot \cos \varepsilon + \cos x \cdot \sin \varepsilon\right)} - \sin x\]
      0.5
    4. Applied associate--l+ to get
      \[\color{red}{\left(\sin x \cdot \cos \varepsilon + \cos x \cdot \sin \varepsilon\right) - \sin x} \leadsto \color{blue}{\sin x \cdot \cos \varepsilon + \left(\cos x \cdot \sin \varepsilon - \sin x\right)}\]
      0.5
    5. Using strategy rm
      0.5
    6. Applied expm1-log1p-u to get
      \[\color{red}{\sin x \cdot \cos \varepsilon} + \left(\cos x \cdot \sin \varepsilon - \sin x\right) \leadsto \color{blue}{(e^{\log_* (1 + \sin x \cdot \cos \varepsilon)} - 1)^*} + \left(\cos x \cdot \sin \varepsilon - \sin x\right)\]
      0.6

    if -0.00024292355f0 < eps < 1.6179318f-10

    1. Started with
      \[\sin \left(x + \varepsilon\right) - \sin x\]
      20.9
    2. Using strategy rm
      20.9
    3. Applied sin-sum to get
      \[\color{red}{\sin \left(x + \varepsilon\right)} - \sin x \leadsto \color{blue}{\left(\sin x \cdot \cos \varepsilon + \cos x \cdot \sin \varepsilon\right)} - \sin x\]
      14.6
    4. Applied associate--l+ to get
      \[\color{red}{\left(\sin x \cdot \cos \varepsilon + \cos x \cdot \sin \varepsilon\right) - \sin x} \leadsto \color{blue}{\sin x \cdot \cos \varepsilon + \left(\cos x \cdot \sin \varepsilon - \sin x\right)}\]
      14.6
    5. Using strategy rm
      14.6
    6. Applied expm1-log1p-u to get
      \[\sin x \cdot \cos \varepsilon + \left(\color{red}{\cos x \cdot \sin \varepsilon} - \sin x\right) \leadsto \sin x \cdot \cos \varepsilon + \left(\color{blue}{(e^{\log_* (1 + \cos x \cdot \sin \varepsilon)} - 1)^*} - \sin x\right)\]
      14.6
    7. Applied taylor to get
      \[\sin x \cdot \cos \varepsilon + \left((e^{\log_* (1 + \cos x \cdot \sin \varepsilon)} - 1)^* - \sin x\right) \leadsto (e^{\log_* (1 + \sin \varepsilon \cdot \cos x)} - 1)^*\]
      0.1
    8. Taylor expanded around 0 to get
      \[\color{red}{(e^{\log_* (1 + \sin \varepsilon \cdot \cos x)} - 1)^*} \leadsto \color{blue}{(e^{\log_* (1 + \sin \varepsilon \cdot \cos x)} - 1)^*}\]
      0.1
    9. Applied simplify to get
      \[\color{red}{(e^{\log_* (1 + \sin \varepsilon \cdot \cos x)} - 1)^*} \leadsto \color{blue}{\cos x \cdot \sin \varepsilon}\]
      0.1

    if 1.6179318f-10 < eps

    1. Started with
      \[\sin \left(x + \varepsilon\right) - \sin x\]
      14.4
    2. Using strategy rm
      14.4
    3. Applied sin-sum to get
      \[\color{red}{\sin \left(x + \varepsilon\right)} - \sin x \leadsto \color{blue}{\left(\sin x \cdot \cos \varepsilon + \cos x \cdot \sin \varepsilon\right)} - \sin x\]
      0.6
    4. Applied associate--l+ to get
      \[\color{red}{\left(\sin x \cdot \cos \varepsilon + \cos x \cdot \sin \varepsilon\right) - \sin x} \leadsto \color{blue}{\sin x \cdot \cos \varepsilon + \left(\cos x \cdot \sin \varepsilon - \sin x\right)}\]
      0.6
    5. Using strategy rm
      0.6
    6. Applied expm1-log1p-u to get
      \[\sin x \cdot \cos \varepsilon + \left(\color{red}{\cos x \cdot \sin \varepsilon} - \sin x\right) \leadsto \sin x \cdot \cos \varepsilon + \left(\color{blue}{(e^{\log_* (1 + \cos x \cdot \sin \varepsilon)} - 1)^*} - \sin x\right)\]
      0.7

  1. Removed slow pow expressions

Original test:


(lambda ((x default) (eps default))
  #:name "NMSE example 3.3"
  (- (sin (+ x eps)) (sin x))
  #:target
  (* 2 (* (cos (+ x (/ eps 2))) (sin (/ eps 2)))))