teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

実行可能なコードにした

2021/03/01 09:24

投稿

Yhaya
Yhaya

スコア439

title CHANGED
File without changes
body CHANGED
@@ -3,8 +3,17 @@
3
3
  Rust で Python で使うようのコードを書いています。Python で使うときに配列の中身は整数型でも浮動小数点数でも良いようにしたいのでジェネリクスを使って対応させようとしています。
4
4
 
5
5
  ```rust
6
+ use pyo3::prelude::*;
7
+ use pyo3::wrap_pyfunction;
8
+
6
9
  use num_traits::{NumAssign, NumCast};
7
10
 
11
+ #[pymodule]
12
+ fn pykk(_py: Python, m: &PyModule) -> PyResult<()> {
13
+ m.add_wrapped(wrap_pyfunction!(imag2real))?;
14
+ Ok(())
15
+ }
16
+
8
17
  #[pyfunction]
9
18
  fn imag2real<T>(x: Vec<T>, y: Vec<T>) -> PyResult<Vec<f64>>
10
19
  where

1

追記

2021/03/01 09:24

投稿

Yhaya
Yhaya

スコア439

title CHANGED
File without changes
body CHANGED
@@ -62,4 +62,50 @@
62
62
 
63
63
  ということだと思うのですが、これらをどう解決したらいいのかわかりません。
64
64
 
65
- 初歩的な質問かと思いますが、どうぞよろしくお願いいたします。
65
+ 初歩的な質問かと思いますが、どうぞよろしくお願いいたします。
66
+
67
+ ## 追記
68
+
69
+ Cargo.toml
70
+
71
+ ```toml
72
+ [package]
73
+ authors = ["xxx xxx"]
74
+ edition = "2018"
75
+ name = "pykk"
76
+ version = "0.1.0"
77
+
78
+ # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
79
+
80
+ [lib]
81
+ crate-type = ["cdylib"]
82
+ name = "pykk"
83
+
84
+ [dependencies.pyo3]
85
+ features = ["extension-module"]
86
+ version = "0.13.2"
87
+
88
+ [dependencies]
89
+ num-traits = "0.2.14"
90
+ ```
91
+
92
+ 関数 `integrate` の実装
93
+
94
+ ```rust
95
+ fn integrate<T>(x: &Vec<T>, y: &Vec<T>, num: usize) -> f64
96
+ where
97
+ T: NumAssign + NumCast + Copy,
98
+ {
99
+ let mut result = T::from(0.0).unwrap();
100
+ let diff = x[1] - x[0];
101
+
102
+ for i in 0..x.len() {
103
+ if i == num {
104
+ continue;
105
+ }
106
+ result += x[num] * y[i] / (x[i] * x[i] - x[num] * x[num]) * diff;
107
+ }
108
+
109
+ result.to_f64().unwrap()
110
+ }
111
+ ```