-
Notifications
You must be signed in to change notification settings - Fork 4
/
uint256.cpp
43 lines (35 loc) · 962 Bytes
/
uint256.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "uint256.h"
#ifdef __cplusplus
extern "C"{
#endif
#include "miner.h"
// compute the diff ratio between a found hash and the target
double hash_target_ratio(uint32_t* hash, uint32_t* target)
{
uint256 h, t;
double dhash;
if (!opt_showdiff)
return 0.0;
memcpy(&t, (void*) target, 32);
memcpy(&h, (void*) hash, 32);
dhash = h.getdouble();
if (dhash > 0.)
return t.getdouble() / dhash;
else
return dhash;
}
// store the share ratio in work struct
void work_set_target_ratio(struct work* work, uint32_t* hash)
{
// only if the option is enabled (to reduce cpu usage)
if (opt_showdiff && work) {
work->shareratio = hash_target_ratio(hash, work->target);
work->sharediff = work->targetdiff * work->shareratio;
if (opt_debug)
// applog(LOG_DEBUG, "share diff %.5f (%.1fx)", work->sharediff, work->shareratio);
applog(LOG_DEBUG, "share diff %.16f (%.1fx)", work->sharediff, work->shareratio);
}
}
#ifdef __cplusplus
}
#endif