### ----------------------------------------------------
### -- Algorithm::BinaryIndexedTree
### -- Licenses: Artistic-2.0
### -- Authors: Itsuki Toyota
### -- File: README.md
### ----------------------------------------------------
[![Actions Status](https://github.com/titsuki/raku-Algorithm-BinaryIndexedTree/workflows/test/badge.svg)](https://github.com/titsuki/raku-Algorithm-BinaryIndexedTree/actions)

NAME
====

Algorithm::BinaryIndexedTree - data structure for cumulative frequency tables

SYNOPSIS
========

    use Algorithm::BinaryIndexedTree;

    my $BIT = Algorithm::BinaryIndexedTree.new();
    $BIT.add(5,10);
    $BIT.get(0).say; # 0
    $BIT.get(5).say; # 10
    $BIT.sum(4).say; # 0
    $BIT.sum(5).say; # 10

    $BIT.add(0,10);
    $BIT.sum(5).say; # 20

DESCRIPTION
===========

Algorithm::BinaryIndexedTree is the data structure for maintainig the cumulative frequencies.

CONSTRUCTOR
-----------

### new

    my $BIT = Algorithm::BinaryIndexedTree.new(%options);

#### OPTIONS

  * `size => $size`

Sets table size. Default is 1000.

METHODS
-------

### add

    $BIT.add($index, $value);

Adds given value to the index `$index`.

### sum

    my $sum = $BIT.sum($index);

Returns sum of the values of items from index 0 to index `$index` inclusive.

### get

    my $value = $BIT.get($index);

Returns the value at index `$index`.

AUTHOR
======

titsuki <titsuki@cpan.org>

COPYRIGHT AND LICENSE
=====================

Copyright 2016 titsuki

This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.

The algorithm is from Fenwick, Peter M. "A new data structure for cumulative frequency tables." Software: Practice and Experience 24.3 (1994): 327-336.



