Skip to content

Commit 3052ef3

Browse files
committed
fix: f32 convert to f64 pass all func
1 parent b62b5ce commit 3052ef3

File tree

14 files changed

+7912
-452
lines changed

14 files changed

+7912
-452
lines changed

.github/workflows/CI.yml

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -100,35 +100,35 @@ jobs:
100100
name: wheels
101101
path: dist
102102

103-
linux-arm:
104-
runs-on: ubuntu-latest
105-
strategy:
106-
matrix:
107-
target: [aarch64]
108-
steps:
109-
- uses: actions/checkout@v4
110-
- uses: actions/setup-python@v4
111-
with:
112-
python-version: "3.10"
113-
- name: Setup QEMU
114-
uses: docker/setup-qemu-action@v1
115-
- name: Build wheels
116-
uses: PyO3/maturin-action@v1
117-
with:
118-
target: ${{ matrix.target }}
119-
args: --release --out dist --find-interpreter
120-
sccache: 'true'
121-
container: ghcr.io/rust-cross/manylinux_2_28-cross:aarch64
122-
rust-toolchain: stable-aarch64-unknown-linux-gnu
123-
env:
124-
DEPS_PATH: ${{ github.workspace }}/dependencies
125-
TA_INCLUDE_PATH: ${{ github.workspace }}/dependencies/include
126-
TA_LIBRARY_PATH: ${{ github.workspace }}/dependencies/lib
127-
- name: Upload wheels
128-
uses: actions/upload-artifact@v3
129-
with:
130-
name: wheels
131-
path: dist
103+
# linux-arm:
104+
# runs-on: ubuntu-latest
105+
# strategy:
106+
# matrix:
107+
# target: [aarch64]
108+
# steps:
109+
# - uses: actions/checkout@v4
110+
# - uses: actions/setup-python@v4
111+
# with:
112+
# python-version: "3.10"
113+
# - name: Setup QEMU
114+
# uses: docker/setup-qemu-action@v1
115+
# - name: Build wheels
116+
# uses: PyO3/maturin-action@v1
117+
# with:
118+
# target: ${{ matrix.target }}
119+
# args: --release --out dist --find-interpreter
120+
# sccache: 'true'
121+
# container: ghcr.io/rust-cross/manylinux_2_28-cross:aarch64
122+
# rust-toolchain: stable-aarch64-unknown-linux-gnu
123+
# env:
124+
# DEPS_PATH: ${{ github.workspace }}/dependencies
125+
# TA_INCLUDE_PATH: ${{ github.workspace }}/dependencies/include
126+
# TA_LIBRARY_PATH: ${{ github.workspace }}/dependencies/lib
127+
# - name: Upload wheels
128+
# uses: actions/upload-artifact@v3
129+
# with:
130+
# name: wheels
131+
# path: dist
132132

133133

134134
windows:

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "polars_talib"
3-
version = "0.1.3"
3+
version = "0.1.4"
44
edition = "2021"
55

66
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

src/cycle.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
use crate::utils::{get_series_f64_ptr, ta_code2err};
1+
use crate::utils::{cast_series_to_f64, get_series_f64_ptr, ta_code2err};
22
use polars::prelude::*;
33
use pyo3_polars::derive::polars_expr;
44
use talib::cycle::{ta_ht_dcperiod, ta_ht_dcphase, ta_ht_phasor, ta_ht_sine, ta_ht_trendmode};
55

66
#[polars_expr(output_type=Float64)]
77
fn ht_dcperiod(inputs: &[Series]) -> PolarsResult<Series> {
8-
let mut real = inputs[0].to_float()?.rechunk();
8+
let mut real = cast_series_to_f64(&inputs[0])?;
99
let (real_ptr, _real) = get_series_f64_ptr(&mut real)?;
1010
let res = ta_ht_dcperiod(real_ptr, real.len());
1111
match res {
@@ -16,7 +16,7 @@ fn ht_dcperiod(inputs: &[Series]) -> PolarsResult<Series> {
1616

1717
#[polars_expr(output_type=Float64)]
1818
fn ht_dcphase(inputs: &[Series]) -> PolarsResult<Series> {
19-
let mut real = inputs[0].to_float()?.rechunk();
19+
let mut real = cast_series_to_f64(&inputs[0])?;
2020
let (real_ptr, _real) = get_series_f64_ptr(&mut real)?;
2121
let res = ta_ht_dcphase(real_ptr, real.len());
2222
match res {
@@ -34,7 +34,7 @@ pub fn ht_phasor_output(_: &[Field]) -> PolarsResult<Field> {
3434

3535
#[polars_expr(output_type_func=ht_phasor_output)]
3636
fn ht_phasor(inputs: &[Series]) -> PolarsResult<Series> {
37-
let mut real = inputs[0].to_float()?.rechunk();
37+
let mut real = cast_series_to_f64(&inputs[0])?;
3838
let (real_ptr, _real) = get_series_f64_ptr(&mut real)?;
3939
let res = ta_ht_phasor(real_ptr, real.len());
4040
match res {
@@ -57,7 +57,7 @@ pub fn ht_sine_output(_: &[Field]) -> PolarsResult<Field> {
5757

5858
#[polars_expr(output_type_func=ht_sine_output)]
5959
fn ht_sine(inputs: &[Series]) -> PolarsResult<Series> {
60-
let mut real = inputs[0].to_float()?.rechunk();
60+
let mut real = cast_series_to_f64(&inputs[0])?;
6161
let (real_ptr, _real) = get_series_f64_ptr(&mut real)?;
6262
let res = ta_ht_sine(real_ptr, real.len());
6363
match res {
@@ -73,7 +73,7 @@ fn ht_sine(inputs: &[Series]) -> PolarsResult<Series> {
7373

7474
#[polars_expr(output_type=Int32)]
7575
fn ht_trendmode(inputs: &[Series]) -> PolarsResult<Series> {
76-
let mut real = inputs[0].to_float()?.rechunk();
76+
let mut real = cast_series_to_f64(&inputs[0])?;
7777
let (real_ptr, _real) = get_series_f64_ptr(&mut real)?;
7878
let res = ta_ht_trendmode(real_ptr, real.len());
7979
match res {

src/math.rs

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::utils::{get_series_f64_ptr, ta_code2err};
1+
use crate::utils::{cast_series_to_f64, get_series_f64_ptr, ta_code2err};
22
use polars::prelude::*;
33
use pyo3_polars::derive::polars_expr;
44
use talib::common::TimePeriodKwargs;
@@ -14,8 +14,8 @@ use talib::math::{
1414

1515
#[polars_expr(output_type=Float64)]
1616
fn 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)]
3030
fn 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)]
4444
fn 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)]
5656
fn 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)]
6868
fn 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)]
8080
fn 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)]
9999
fn 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)]
124124
fn 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)]
142142
fn 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)]
156156
fn 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)]
170170
fn 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)]
183183
fn 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)]
199199
fn 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)]
215215
fn 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)]
231231
fn 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)]
247247
fn 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)]
263263
fn 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)]
279279
fn 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)]
292292
fn 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)]
305305
fn 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)]
318318
fn 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)]
331331
fn 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)]
344344
fn 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)]
357357
fn 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)]
370370
fn 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)]
383383
fn 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

Comments
 (0)