MCPcopy Create free account
hub / github.com/HiLab-git/SimpleCRF / update_adler32

Function update_adler32

dependency/densecrf/examples/lodepng.cpp:2091–2112  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2089/* ////////////////////////////////////////////////////////////////////////// */
2090
2091static unsigned update_adler32(unsigned adler, const unsigned char* data, unsigned len)
2092{
2093 unsigned s1 = adler & 0xffff;
2094 unsigned s2 = (adler >> 16) & 0xffff;
2095
2096 while(len > 0)
2097 {
2098 /*at least 5550 sums can be done before the sums overflow, saving a lot of module divisions*/
2099 unsigned amount = len > 5550 ? 5550 : len;
2100 len -= amount;
2101 while(amount > 0)
2102 {
2103 s1 += (*data++);
2104 s2 += s1;
2105 --amount;
2106 }
2107 s1 %= 65521;
2108 s2 %= 65521;
2109 }
2110
2111 return (s2 << 16) | s1;
2112}
2113
2114/*Return the adler32 of the bytes data[0..len-1]*/
2115static unsigned adler32(const unsigned char* data, unsigned len)

Callers 1

adler32Function · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected