n = (STR-1) / 500, round up
Percent increase in damage = STR*n / 33
I could only test that up to 1500 STR. Need someone with 2001+ str to confirm this.

For reduction, just replace the usual 33 with 30 (DEX / 30)

Now we just need to figure out how defense works >>

There are jumps every 500 because the formula changes (sort of) every 500. It's using integer division for that (STR-1)/500 part, which explains the jumps.
But the damage % increase is constant within every set of 500. I just tested that up to 1500.