[verb ない-form 〜ない → 〜なく] + はない / もない [i-adj 〜い → 〜くなく] + はない / もない [na-adj] + じゃなく / でなく + はない / もない [noun] + じゃなく / でなく + はない / もない
なくはない and なくもない turn a negative back into a cautious yes: "it's not that I don't", "I wouldn't say I can't". Take the ない-form, drop the final い, and add はない or もない – 分からない becomes わからなく分からなくもない. The two mean the same; もない sounds a little softer.
The result is a weak yes, never a no. The speaker admits something to a degree and leaves room for a reservation, which usually follows with けど or が.
On a potential verb, it says something is possible, if only just. といえなく言えなくもない is a set phrase: "you could say that".
An い-adjective goes to 〜くなくはない, and a な-adjective or noun to じゃなくはない or でなくはない. ない itself, "there isn't", becomes なくはない directly.
ないことはない makes the same weak yes with ことはない after the full ない-form: いけない行けないことはない. On verbs, ないでもない means the same as なくもない: わからないで分からないでもない.