1
1
using System ;
2
+ using System . Threading . Tasks ;
3
+ using NumSharp . Utilities ;
2
4
3
5
namespace NumSharp . Backends
4
6
{
@@ -23,18 +25,14 @@ public override NDArray Tanh(in NDArray nd, NPTypeCode? typeCode = null)
23
25
case NPTypeCode. #1 :
24
26
{
25
27
var out_addr = ( #2 * ) @out. Address;
26
- for ( int i = 0 ; i < len ; i++ )
27
- * ( out_addr + i ) = Convert. To #1 ( Math . Tanh ( * ( out_addr + i ) ) ) ;
28
-
28
+ Parallel. For( 0 , len , i => * ( out_addr + i ) = Converts. To #1 ( Math . Tanh ( * ( out_addr + i ) ) ) ) ;
29
29
return @out;
30
30
}
31
31
%
32
32
case NPTypeCode. Decimal:
33
33
{
34
34
var out_addr = ( decimal * ) @out . Address ;
35
- for ( int i = 0 ; i < len ; i++ )
36
- * ( out_addr + i ) = ( decimal ) ( Math . Tanh ( Convert . ToDouble ( * ( out_addr + i ) ) ) ) ;
37
-
35
+ Parallel . For ( 0 , len , i => * ( out_addr + i ) = ( decimal ) ( Math . Tanh ( Converts . ToDouble ( * ( out_addr + i ) ) ) ) ) ;
38
36
return @out;
39
37
}
40
38
default :
@@ -43,89 +41,67 @@ public override NDArray Tanh(in NDArray nd, NPTypeCode? typeCode = null)
43
41
case NPTypeCode. Byte :
44
42
{
45
43
var out_addr = ( byte * ) @out . Address ;
46
- for ( int i = 0 ; i < len ; i++ )
47
- * ( out_addr + i ) = Convert. ToByte ( Math . Tanh ( * ( out_addr + i ) ) ) ;
48
-
44
+ Parallel . For ( 0 , len , i => * ( out_addr + i ) = Converts. ToByte ( Math . Tanh ( * ( out_addr + i ) ) ) ) ;
49
45
return @out;
50
46
}
51
47
case NPTypeCode . Int16 :
52
48
{
53
49
var out_addr = ( short * ) @out . Address ;
54
- for ( int i = 0 ; i < len ; i++ )
55
- * ( out_addr + i ) = Convert. ToInt16 ( Math . Tanh ( * ( out_addr + i ) ) ) ;
56
-
50
+ Parallel . For ( 0 , len , i => * ( out_addr + i ) = Converts. ToInt16 ( Math . Tanh ( * ( out_addr + i ) ) ) ) ;
57
51
return @out;
58
52
}
59
53
case NPTypeCode. UInt16 :
60
54
{
61
55
var out_addr = ( ushort * ) @out . Address ;
62
- for ( int i = 0 ; i < len ; i++ )
63
- * ( out_addr + i ) = Convert. ToUInt16 ( Math . Tanh ( * ( out_addr + i ) ) ) ;
64
-
56
+ Parallel. For ( 0 , len , i => * ( out_addr + i ) = Converts. ToUInt16 ( Math . Tanh ( * ( out_addr + i ) ) ) ) ;
65
57
return @out;
66
58
}
67
59
case NPTypeCode. Int32 :
68
60
{
69
61
var out_addr = ( int * ) @out . Address ;
70
- for ( int i = 0 ; i < len ; i++ )
71
- * ( out_addr + i ) = Convert. ToInt32 ( Math . Tanh ( * ( out_addr + i ) ) ) ;
72
-
62
+ Parallel. For ( 0 , len , i => * ( out_addr + i ) = Converts. ToInt32 ( Math . Tanh ( * ( out_addr + i ) ) ) ) ;
73
63
return @out;
74
64
}
75
65
case NPTypeCode. UInt32 :
76
66
{
77
67
var out_addr = ( uint * ) @out . Address ;
78
- for ( int i = 0 ; i < len ; i++ )
79
- * ( out_addr + i ) = Convert. ToUInt32 ( Math . Tanh ( * ( out_addr + i ) ) ) ;
80
-
68
+ Parallel. For ( 0 , len , i => * ( out_addr + i ) = Converts. ToUInt32 ( Math . Tanh ( * ( out_addr + i ) ) ) ) ;
81
69
return @out;
82
70
}
83
71
case NPTypeCode. Int64 :
84
72
{
85
73
var out_addr = ( long * ) @out . Address ;
86
- for ( int i = 0 ; i < len ; i++ )
87
- * ( out_addr + i ) = Convert. ToInt64 ( Math . Tanh ( * ( out_addr + i ) ) ) ;
88
-
74
+ Parallel. For ( 0 , len , i => * ( out_addr + i ) = Converts. ToInt64 ( Math . Tanh ( * ( out_addr + i ) ) ) ) ;
89
75
return @out;
90
76
}
91
77
case NPTypeCode. UInt64 :
92
78
{
93
79
var out_addr = ( ulong * ) @out . Address ;
94
- for ( int i = 0 ; i < len ; i++ )
95
- * ( out_addr + i ) = Convert. ToUInt64 ( Math . Tanh ( * ( out_addr + i ) ) ) ;
96
-
80
+ Parallel. For ( 0 , len , i => * ( out_addr + i ) = Converts. ToUInt64 ( Math . Tanh ( * ( out_addr + i ) ) ) ) ;
97
81
return @out;
98
82
}
99
83
case NPTypeCode. Char :
100
84
{
101
85
var out_addr = ( char * ) @out . Address ;
102
- for ( int i = 0 ; i < len ; i++ )
103
- * ( out_addr + i ) = Convert. ToChar ( Math . Tanh ( * ( out_addr + i ) ) ) ;
104
-
86
+ Parallel. For ( 0 , len , i => * ( out_addr + i ) = Converts. ToChar ( Math . Tanh ( * ( out_addr + i ) ) ) ) ;
105
87
return @out;
106
88
}
107
89
case NPTypeCode. Double :
108
90
{
109
91
var out_addr = ( double * ) @out . Address ;
110
- for ( int i = 0 ; i < len ; i++ )
111
- * ( out_addr + i ) = Convert. ToDouble ( Math . Tanh ( * ( out_addr + i ) ) ) ;
112
-
92
+ Parallel. For ( 0 , len , i => * ( out_addr + i ) = Converts. ToDouble ( Math . Tanh ( * ( out_addr + i ) ) ) ) ;
113
93
return @out;
114
94
}
115
95
case NPTypeCode. Single :
116
96
{
117
97
var out_addr = ( float * ) @out . Address ;
118
- for ( int i = 0 ; i < len ; i++ )
119
- * ( out_addr + i ) = Convert. ToSingle ( Math . Tanh ( * ( out_addr + i ) ) ) ;
120
-
98
+ Parallel. For ( 0 , len , i => * ( out_addr + i ) = Converts. ToSingle ( Math . Tanh ( * ( out_addr + i ) ) ) ) ;
121
99
return @out;
122
100
}
123
101
case NPTypeCode. Decimal :
124
102
{
125
103
var out_addr = ( decimal * ) @out . Address ;
126
- for ( int i = 0 ; i < len ; i++ )
127
- * ( out_addr + i ) = ( decimal ) ( Math . Tanh ( Convert . ToDouble ( * ( out_addr + i ) ) ) ) ;
128
-
104
+ Parallel. For ( 0 , len , i => * ( out_addr + i ) = ( decimal ) ( Math . Tanh ( Converts . ToDouble ( * ( out_addr + i ) ) ) ) ) ;
129
105
return @out;
130
106
}
131
107
default :
0 commit comments