File tree 2 files changed +25
-13
lines changed
2 files changed +25
-13
lines changed Original file line number Diff line number Diff line change 870
870
(defmethod g /exact? [::series ] [_] false )
871
871
(defmethod g /exact? [::power-series ] [_] false )
872
872
(defmethod g /freeze [::power-series ] [^PowerSeries s]
873
- (let [prefix (->> (g/simplify (take 4 (.-xs s)))
874
- (g/freeze )
875
- (filter (complement g/zero?))
876
- (map-indexed
877
- (fn [n a]
878
- (if (g/one? a)
879
- `(~'expt ~'_ ~n)
880
- `(~'* ~a (~'expt ~'_ ~n))))))]
881
- `(~'+ ~@prefix ~'...)))
873
+ (let [prefix (->> (g/simplify (take 4 (.-xs s)))
874
+ (g/freeze )
875
+ (into [] (comp
876
+ (map-indexed
877
+ (fn [n a]
878
+ (cond (g/zero? a) []
879
+ (g/one? a) [(list 'expt '_ n)]
880
+ :else [(list '* a (list 'expt '_ n))])))
881
+ cat)))]
882
+ `(~'+ ~@prefix ~'...)))
883
+
882
884
(defmethod g /freeze [::series ] [^Series s]
883
- (let [prefix (g/freeze
884
- (g/simplify (take 4 (.-xs s))))]
885
- `(~'+ ~@prefix ~'...)))
885
+ (let [prefix (g/freeze
886
+ (g/simplify (take 4 (.-xs s))))]
887
+ `(~'+ ~@prefix ~'...)))
Original file line number Diff line number Diff line change 286
286
(is (= " (+ (* 4 (expt _ 0)) (* 5 (expt _ 1)) (* 6 (expt _ 2)) (* 7 (expt _ 3)) ...)"
287
287
(str p)))
288
288
(is (= (str s) (str (g/freeze s))))
289
- (is (= (str p) (str (g/freeze p))))))))
289
+ (is (= (str p) (str (g/freeze p))))
290
+
291
+ (is (= " (+ (expt _ 0) (* (/ -1 2) (expt _ 2)) ...)"
292
+ (str
293
+ (g/freeze s/cos-series)))
294
+ " cosine representation has the initial 1, drops correct zeros" )
295
+
296
+ (is (= " (+ (expt _ 1) (* (/ -1 6) (expt _ 3)) ...)"
297
+ (str
298
+ (g/freeze s/sin-series)))
299
+ " sine representation drops correct zeros" )))))
290
300
291
301
(deftest series-as-fn-tests
292
302
(let [f (fn [i] #(g/* %1 %2 i))
You can’t perform that action at this time.
0 commit comments