1- use crate :: utils:: { get_series_f64_ptr, ta_code2err} ;
1+ use crate :: utils:: { cast_series_to_f64 , get_series_f64_ptr, ta_code2err} ;
22use polars:: prelude:: * ;
33use pyo3_polars:: derive:: polars_expr;
44use talib:: common:: TimePeriodKwargs ;
@@ -14,8 +14,8 @@ use talib::math::{
1414
1515#[ polars_expr( output_type=Float64 ) ]
1616fn add ( inputs : & [ Series ] ) -> PolarsResult < Series > {
17- let input1 = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
18- let input2 = & mut inputs[ 1 ] . to_float ( ) ? . rechunk ( ) ;
17+ let input1 = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
18+ let input2 = & mut cast_series_to_f64 ( & inputs[ 1 ] ) ? ;
1919 let ( input1_ptr, _input1) = get_series_f64_ptr ( input1) ?;
2020 let ( input2_ptr, _input2) = get_series_f64_ptr ( input2) ?;
2121 let len = input1. len ( ) ;
@@ -28,8 +28,8 @@ fn add(inputs: &[Series]) -> PolarsResult<Series> {
2828
2929#[ polars_expr( output_type=Float64 ) ]
3030fn div ( inputs : & [ Series ] ) -> PolarsResult < Series > {
31- let input1 = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
32- let input2 = & mut inputs[ 1 ] . to_float ( ) ? . rechunk ( ) ;
31+ let input1 = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
32+ let input2 = & mut cast_series_to_f64 ( & inputs[ 1 ] ) ? ;
3333 let ( input1_ptr, _input1) = get_series_f64_ptr ( input1) ?;
3434 let ( input2_ptr, _input2) = get_series_f64_ptr ( input2) ?;
3535 let len = input1. len ( ) ;
@@ -42,7 +42,7 @@ fn div(inputs: &[Series]) -> PolarsResult<Series> {
4242
4343#[ polars_expr( output_type=Float64 ) ]
4444fn max ( inputs : & [ Series ] , kwargs : TimePeriodKwargs ) -> PolarsResult < Series > {
45- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
45+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
4646 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
4747 let len = input. len ( ) ;
4848 let res = ta_max ( input_ptr, len, & kwargs) ;
@@ -54,7 +54,7 @@ fn max(inputs: &[Series], kwargs: TimePeriodKwargs) -> PolarsResult<Series> {
5454
5555#[ polars_expr( output_type=Int32 ) ]
5656fn maxindex ( inputs : & [ Series ] , kwargs : TimePeriodKwargs ) -> PolarsResult < Series > {
57- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
57+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
5858 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
5959 let len = input. len ( ) ;
6060 let res = ta_maxindex ( input_ptr, len, & kwargs) ;
@@ -66,7 +66,7 @@ fn maxindex(inputs: &[Series], kwargs: TimePeriodKwargs) -> PolarsResult<Series>
6666
6767#[ polars_expr( output_type=Float64 ) ]
6868fn min ( inputs : & [ Series ] , kwargs : TimePeriodKwargs ) -> PolarsResult < Series > {
69- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
69+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
7070 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
7171 let len = input. len ( ) ;
7272 let res = ta_min ( input_ptr, len, & kwargs) ;
@@ -78,7 +78,7 @@ fn min(inputs: &[Series], kwargs: TimePeriodKwargs) -> PolarsResult<Series> {
7878
7979#[ polars_expr( output_type=Int32 ) ]
8080fn minindex ( inputs : & [ Series ] , kwargs : TimePeriodKwargs ) -> PolarsResult < Series > {
81- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
81+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
8282 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
8383 let len = input. len ( ) ;
8484 let res = ta_minindex ( input_ptr, len, & kwargs) ;
@@ -97,7 +97,7 @@ pub fn minmax_output(_: &[Field]) -> PolarsResult<Field> {
9797
9898#[ polars_expr( output_type_func=minmax_output) ]
9999fn minmax ( inputs : & [ Series ] , kwargs : TimePeriodKwargs ) -> PolarsResult < Series > {
100- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
100+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
101101 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
102102
103103 let len = input. len ( ) ;
@@ -122,7 +122,7 @@ pub fn minmaxindex_output(_: &[Field]) -> PolarsResult<Field> {
122122
123123#[ polars_expr( output_type_func=minmaxindex_output) ]
124124fn minmaxindex ( inputs : & [ Series ] , kwargs : TimePeriodKwargs ) -> PolarsResult < Series > {
125- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
125+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
126126 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
127127
128128 let len = input. len ( ) ;
@@ -140,8 +140,8 @@ fn minmaxindex(inputs: &[Series], kwargs: TimePeriodKwargs) -> PolarsResult<Seri
140140
141141#[ polars_expr( output_type=Float64 ) ]
142142fn mult ( inputs : & [ Series ] ) -> PolarsResult < Series > {
143- let input1 = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
144- let input2 = & mut inputs[ 1 ] . to_float ( ) ? . rechunk ( ) ;
143+ let input1 = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
144+ let input2 = & mut cast_series_to_f64 ( & inputs[ 1 ] ) ? ;
145145 let ( input1_ptr, _input1) = get_series_f64_ptr ( input1) ?;
146146 let ( input2_ptr, _input2) = get_series_f64_ptr ( input2) ?;
147147 let len = input1. len ( ) ;
@@ -154,8 +154,8 @@ fn mult(inputs: &[Series]) -> PolarsResult<Series> {
154154
155155#[ polars_expr( output_type=Float64 ) ]
156156fn sub ( inputs : & [ Series ] ) -> PolarsResult < Series > {
157- let input1 = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
158- let input2 = & mut inputs[ 1 ] . to_float ( ) ? . rechunk ( ) ;
157+ let input1 = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
158+ let input2 = & mut cast_series_to_f64 ( & inputs[ 1 ] ) ? ;
159159 let ( input1_ptr, _input1) = get_series_f64_ptr ( input1) ?;
160160 let ( input2_ptr, _input2) = get_series_f64_ptr ( input2) ?;
161161 let len = input1. len ( ) ;
@@ -168,7 +168,7 @@ fn sub(inputs: &[Series]) -> PolarsResult<Series> {
168168
169169#[ polars_expr( output_type=Float64 ) ]
170170fn sum ( inputs : & [ Series ] , kwargs : TimePeriodKwargs ) -> PolarsResult < Series > {
171- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
171+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
172172 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
173173
174174 let len = input. len ( ) ;
@@ -181,7 +181,7 @@ fn sum(inputs: &[Series], kwargs: TimePeriodKwargs) -> PolarsResult<Series> {
181181
182182#[ polars_expr( output_type=Float64 ) ]
183183fn acos ( inputs : & [ Series ] ) -> PolarsResult < Series > {
184- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
184+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
185185 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
186186
187187 let len = input. len ( ) ;
@@ -197,7 +197,7 @@ fn acos(inputs: &[Series]) -> PolarsResult<Series> {
197197
198198#[ polars_expr( output_type=Float64 ) ]
199199fn asin ( inputs : & [ Series ] ) -> PolarsResult < Series > {
200- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
200+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
201201 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
202202
203203 let len = input. len ( ) ;
@@ -213,7 +213,7 @@ fn asin(inputs: &[Series]) -> PolarsResult<Series> {
213213
214214#[ polars_expr( output_type=Float64 ) ]
215215fn atan ( inputs : & [ Series ] ) -> PolarsResult < Series > {
216- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
216+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
217217 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
218218
219219 let len = input. len ( ) ;
@@ -229,7 +229,7 @@ fn atan(inputs: &[Series]) -> PolarsResult<Series> {
229229
230230#[ polars_expr( output_type=Float64 ) ]
231231fn ceil ( inputs : & [ Series ] ) -> PolarsResult < Series > {
232- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
232+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
233233 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
234234
235235 let len = input. len ( ) ;
@@ -245,7 +245,7 @@ fn ceil(inputs: &[Series]) -> PolarsResult<Series> {
245245
246246#[ polars_expr( output_type=Float64 ) ]
247247fn cos ( inputs : & [ Series ] ) -> PolarsResult < Series > {
248- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
248+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
249249 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
250250
251251 let len = input. len ( ) ;
@@ -261,7 +261,7 @@ fn cos(inputs: &[Series]) -> PolarsResult<Series> {
261261
262262#[ polars_expr( output_type=Float64 ) ]
263263fn cosh ( inputs : & [ Series ] ) -> PolarsResult < Series > {
264- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
264+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
265265 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
266266
267267 let len = input. len ( ) ;
@@ -277,7 +277,7 @@ fn cosh(inputs: &[Series]) -> PolarsResult<Series> {
277277
278278#[ polars_expr( output_type=Float64 ) ]
279279fn exp ( inputs : & [ Series ] ) -> PolarsResult < Series > {
280- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
280+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
281281 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
282282
283283 let len = input. len ( ) ;
@@ -290,7 +290,7 @@ fn exp(inputs: &[Series]) -> PolarsResult<Series> {
290290
291291#[ polars_expr( output_type=Float64 ) ]
292292fn floor ( inputs : & [ Series ] ) -> PolarsResult < Series > {
293- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
293+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
294294 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
295295
296296 let len = input. len ( ) ;
@@ -303,7 +303,7 @@ fn floor(inputs: &[Series]) -> PolarsResult<Series> {
303303
304304#[ polars_expr( output_type=Float64 ) ]
305305fn ln ( inputs : & [ Series ] ) -> PolarsResult < Series > {
306- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
306+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
307307 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
308308
309309 let len = input. len ( ) ;
@@ -316,7 +316,7 @@ fn ln(inputs: &[Series]) -> PolarsResult<Series> {
316316
317317#[ polars_expr( output_type=Float64 ) ]
318318fn log10 ( inputs : & [ Series ] ) -> PolarsResult < Series > {
319- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
319+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
320320 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
321321
322322 let len = input. len ( ) ;
@@ -329,7 +329,7 @@ fn log10(inputs: &[Series]) -> PolarsResult<Series> {
329329
330330#[ polars_expr( output_type=Float64 ) ]
331331fn sin ( inputs : & [ Series ] ) -> PolarsResult < Series > {
332- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
332+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
333333 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
334334
335335 let len = input. len ( ) ;
@@ -342,7 +342,7 @@ fn sin(inputs: &[Series]) -> PolarsResult<Series> {
342342
343343#[ polars_expr( output_type=Float64 ) ]
344344fn sinh ( inputs : & [ Series ] ) -> PolarsResult < Series > {
345- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
345+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
346346 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
347347
348348 let len = input. len ( ) ;
@@ -355,7 +355,7 @@ fn sinh(inputs: &[Series]) -> PolarsResult<Series> {
355355
356356#[ polars_expr( output_type=Float64 ) ]
357357fn sqrt ( inputs : & [ Series ] ) -> PolarsResult < Series > {
358- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
358+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
359359 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
360360
361361 let len = input. len ( ) ;
@@ -368,7 +368,7 @@ fn sqrt(inputs: &[Series]) -> PolarsResult<Series> {
368368
369369#[ polars_expr( output_type=Float64 ) ]
370370fn tan ( inputs : & [ Series ] ) -> PolarsResult < Series > {
371- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
371+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
372372 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
373373
374374 let len = input. len ( ) ;
@@ -381,7 +381,7 @@ fn tan(inputs: &[Series]) -> PolarsResult<Series> {
381381
382382#[ polars_expr( output_type=Float64 ) ]
383383fn tanh ( inputs : & [ Series ] ) -> PolarsResult < Series > {
384- let input = & mut inputs[ 0 ] . to_float ( ) ? . rechunk ( ) ;
384+ let input = & mut cast_series_to_f64 ( & inputs[ 0 ] ) ? ;
385385 let ( input_ptr, _input) = get_series_f64_ptr ( input) ?;
386386
387387 let len = input. len ( ) ;
0 commit comments