File tree 3 files changed +29
-0
lines changed
3 files changed +29
-0
lines changed Original file line number Diff line number Diff line change 10
10
#include <limits.h>
11
11
#include <ctype.h>
12
12
13
+ #if defined(_MSC_VER )
14
+ # include <winsock2.h>
15
+ #endif
16
+
13
17
#include <libasr/runtime/lfortran_intrinsics.h>
14
18
#include <libasr/config.h>
15
19
@@ -1254,6 +1258,22 @@ LFORTRAN_API void _lfortran_i64sys_clock(
1254
1258
#endif
1255
1259
}
1256
1260
1261
+ LFORTRAN_API double _lfortran_time ()
1262
+ {
1263
+ #if defined(_MSC_VER )
1264
+ FILETIME ft ;
1265
+ ULARGE_INTEGER uli ;
1266
+ GetSystemTimeAsFileTime (& ft );
1267
+ uli .LowPart = ft .dwLowDateTime ;
1268
+ uli .HighPart = ft .dwHighDateTime ;
1269
+ return (double )uli .QuadPart / 10000000.0 - 11644473600.0 ;
1270
+ #else
1271
+ struct timespec ts ;
1272
+ clock_gettime (CLOCK_REALTIME , & ts );
1273
+ return (double )ts .tv_sec + (double )ts .tv_nsec / 1000000000.0 ;
1274
+ #endif
1275
+ }
1276
+
1257
1277
LFORTRAN_API void _lfortran_sp_rand_num (float * x ) {
1258
1278
srand (time (0 ));
1259
1279
* x = rand () / (float ) RAND_MAX ;
Original file line number Diff line number Diff line change @@ -211,6 +211,7 @@ LFORTRAN_API void _lfortran_i32sys_clock(
211
211
int32_t * count , int32_t * rate , int32_t * max );
212
212
LFORTRAN_API void _lfortran_i64sys_clock (
213
213
uint64_t * count , int64_t * rate , int64_t * max );
214
+ LFORTRAN_API double _lfortran_time ();
214
215
LFORTRAN_API void _lfortran_sp_rand_num (float * x );
215
216
LFORTRAN_API void _lfortran_dp_rand_num (double * x );
216
217
LFORTRAN_API int64_t _lpython_open (char * path , char * flags );
Original file line number Diff line number Diff line change
1
+ from lpython import f64 , ccall
2
+
3
+ def time () -> f64 :
4
+ return _lfortran_time ()
5
+
6
+ @ccall
7
+ def _lfortran_time () -> f64 :
8
+ pass
You can’t perform that action at this time.
0 commit comments