I'd read up on the Uniswap constant product invariant (xy=k) and consider reading the Uniswap v2 code (it's a pleasure to read) [0].
Then check out the StableSwap paper by Curve founder Michael Egorov [1]
Finally if you want a well-documented implementation to read in Solidity, check out Saddle [2]. Disclaimer, I helped write the first iteration.
[0] https://github.com/Uniswap/v2-core [1] https://curve.fi/files/stableswap-paper.pdf [2] https://github.com/saddle-finance/saddle-contract/blob/maste...